Web services platform with integration and interface of smart entities with enterprise applications

ABSTRACT

One or more non-transitory computer readable media contain program instructions that, when executed by one or more processors, cause the one or more processors to perform operations including: creating and managing a plurality of smart entities, each of the smart entities including a plurality of attributes; receiving inbound data from one or more enterprise applications; translating the inbound data into values for one or more of the plurality of attributes; writing the plurality of attributes to the smart entities; reading the plurality of attributes from the smart entities; translating the plurality of attributes into outbound data; and providing the outbound data to the one or more enterprise applications.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/142,859 filed Sep. 26, 2018 which claims the benefit of and priorityto U.S. Provisional Patent Application No. 62/564,247 filed Sep. 27,2017, U.S. Provisional Patent Application No. 62/588,179 filed Nov. 17,2017, U.S. Provisional Patent Application No. 62/588,190 filed Nov. 17,2017, U.S. Provisional Patent Application No. 62/588,114 filed Nov. 17,2017, and U.S. Provisional Patent Application No. 62/611,962 filed Dec.29, 2017. The entire disclosure of each of these patent applications isincorporated by reference herein.

BACKGROUND

The present disclosure relates generally to a web services platform andmore particularly to a web services platform configured to ingest,process, and store data from a variety of different data sources.

Web services platforms typically rely on hardware gateway devices tocollect and pre-process data before the data is provided to the webservices platform. Different gateways use different data ingestiontechniques and software that often do not communicate using the sameprotocols or data models. Accordingly, maintenance and integration costcan be high when multiple gateways must work together to collect andprovide data to a web services platform. It would be desirable toprovide a solution that overcomes these and other problems associatedwith traditional gateway devices.

SUMMARY

One implementation of the present disclosure is a web services platformincluding an entity service and a software defined gateway. The entityservice is configured to create and manage a plurality of smartentities. Each of the smart entities includes a plurality of attributes.The software defined gateway is configured to receive inbound data fromone or more enterprise applications, translate the inbound data intovalues for one or more of the plurality of attributes, and write theplurality of attributes to the smart entities. The software definedgateway is configured to read the plurality of attributes from the smartentities, translate the plurality of attributes into outbound data, andprovide the outbound data to the one or more enterprise applications.

In some embodiments, the software defined gateway is configured to use adifferent communications protocol to communicate with each of theplurality of enterprise applications.

In some embodiments, the software defined gateway is configured totranslate between a first communications protocol or format used by oneor more of the enterprise applications and a second protocol or formatused by the entity service.

In some embodiments, the plurality of enterprise applications include atleast one of a workflow automation system, a customer relationshipmanagement system, a global information system, a device managementsystem, a human resources system, an accounting system, a marketingsystem, or a building management system.

In some embodiments, the plurality of enterprise applications include aworkflow automation system and the inbound data include a workflowrequest. In some embodiments, the entity service is configured to createa workflow request entity representing the workflow request and generatea plurality of attributes of the workflow request entity usinginformation contained in the workflow request.

In some embodiments, the smart entities are virtual representations of aphysical system or device, person or group of people, or space or groupof spaces.

In some embodiments, the inbound data include information technology(IT) data that describe one or more static characteristics of a device,person, or space. In some embodiments, the entity service is configuredto transform the one or more characteristics of the device, person, orspace into the one or more static attributes of the smart entities.

In some embodiments, the inbound data describe the plurality of smartentities and relationships therebetween.

In some embodiments, the inbound data include operational technology(OT) data that describe one or more dynamic states or conditions of adevice, person, or space. In some embodiments, the entity service isconfigured to transform the one or more dynamic states or conditions ofthe device, person, or space into the one or more dynamic attributes ofthe smart entities.

In some embodiments, the inbound data include event data received inreal-time from a web-based service. In some embodiments, the web-basedservice includes a web-based advertising service, a website trafficmonitoring service, a web-based sales service, or a web-based analyticsservice.

In some embodiments, the inbound data include data samples collectedfrom internet of things (IoT) devices.

In some embodiments, the plurality of smart entities include one or moreobject entities representing a plurality of physical devices, one ormore data entities representing data generated by the physical devices,and one or more relational objects indicating relationshipsinterconnecting the object entities and the data entities.

In some embodiments, one or more of the smart entities includes a staticattribute identifying a physical device represented by the smart entityand a dynamic attribute storing a most recent value of a dynamicvariable associated with the physical device.

In some embodiments, the plurality of smart entities include an objectentity representing a physical device and a data entity representingdata generated by the physical device. The data entity may include astatic attribute identifying the object entity and a dynamic attributestoring a most recent value of a dynamic variable associated with thephysical device.

In some embodiments, the plurality of smart entities include an objectentity representing a physical device, a data entity representing datagenerated by the physical device, and a relational object including afirst attribute identifying the object entity and a second attributeidentifying the data entity.

Another implementation of the present disclosure is a web servicesplatform for managing data relating to a plurality of physical devicesconnected to one or more electronic communications networks. The webservices platform includes one or more processors and one or morecomputer-readable storage media communicably coupled to the one or moreprocessors having instructions stored thereon. When executed by the oneor more processors, the instructions cause the one or more processors tocreate and manage a plurality of smart entities. Each of the smartentities includes a plurality of attributes. The instructions cause theone or more processors to receive inbound data from one or moreenterprise applications, translate the inbound data into values for oneor more of the plurality of attributes, write the plurality ofattributes to the smart entities, read the plurality of attributes fromthe smart entities, translate the plurality of attributes into outbounddata, and provide the outbound data to the one or more enterpriseapplications.

In some embodiments, the instructions cause the one or more processorsto use a different communications protocol to communicate with each ofthe plurality of enterprise applications.

In some embodiments, the instructions cause the one or more processorsto translate between a first communications protocol or format used byone or more of the enterprise applications and a second protocol orformat used by the plurality of smart entities.

In some embodiments, the plurality of enterprise applications include atleast one of a workflow automation system, a customer relationshipmanagement system, a global information system, a device managementsystem, a human resources system, an accounting system, a marketingsystem, or a building management system.

In some embodiments, the plurality of enterprise applications include aworkflow automation system and the inbound data comprise a workflowrequest. In some embodiments, the instructions cause the one or moreprocessors to create a workflow request entity representing the workflowrequest and generate a plurality of attributes of the workflow requestentity using information contained in the workflow request.

In some embodiments, the smart entities are virtual representations of aphysical system or device, person or group of people, or space or groupof spaces.

In some embodiments, the inbound data include information technology(IT) data that describe one or more static characteristics of a device,person, or space. In some embodiments, the instructions cause the one ormore processors to transform the one or more characteristics of thedevice, person, or space into the one or more static attributes of thesmart entities.

In some embodiments, the inbound data describe the plurality of smartentities and relationships therebetween.

In some embodiments, the inbound data include operational technology(OT) data that describe one or more dynamic states or conditions of adevice, person, or space. In some embodiments, the instructions causethe one or more processors to transform the one or more dynamic statesor conditions of the device, person, or space into the one or moredynamic attributes of the smart entities.

In some embodiments, the inbound data include event data received inreal-time from a web-based service. In some embodiments, the web-basedservice includes a web-based advertising service, a website trafficmonitoring service, a web-based sales service, or a web-based analyticsservice.

In some embodiments, the inbound data include data samples collectedfrom internet of things (IoT) devices.

In some embodiments, the plurality of smart entities include one or moreobject entities representing a plurality of physical devices, one ormore data entities representing data generated by the physical devices,and one or more relational objects indicating relationshipsinterconnecting the object entities and the data entities.

In some embodiments, one or more of the smart entities includes a staticattribute identifying a physical device represented by the smart entityand a dynamic attribute storing a most recent value of a dynamicvariable associated with the physical device.

In some embodiments, the plurality of smart entities include an objectentity representing a physical device and a data entity representingdata generated by the physical device. The data entity may include astatic attribute identifying the object entity and a dynamic attributestoring a most recent value of a dynamic variable associated with thephysical device.

In some embodiments, the plurality of smart entities include an objectentity representing a physical device, a data entity representing datagenerated by the physical device, and a relational object including afirst attribute identifying the object entity and a second attributeidentifying the data entity.

Another implementation of the present disclosure is a method formanaging data relating to a plurality of physical devices connected toone or more electronic communications networks. The method includescreating and managing a plurality of smart entities. Each of the smartentities includes a plurality of attributes. The method includesreceiving inbound data from one or more enterprise applications,translating the inbound data into values for one or more of theplurality of attributes, writing the plurality of attributes to thesmart entities, reading the plurality of attributes from the smartentities, translating the plurality of attributes into outbound data,and providing the outbound data to the one or more enterpriseapplications.

In some embodiments, the method includes using a differentcommunications protocol to communicate with each of the plurality ofenterprise applications.

In some embodiments, the method includes translating between a firstcommunications protocol or format used by one or more of the enterpriseapplications and a second protocol or format used by the plurality ofsmart entities.

In some embodiments, the plurality of enterprise applications include atleast one of a workflow automation system, a customer relationshipmanagement system, a global information system, a device managementsystem, a human resources system, an accounting system, a marketingsystem, or a building management system.

In some embodiments, the plurality of enterprise applications include aworkflow automation system and the inbound data comprise a workflowrequest. In some embodiments, the method includes creating a workflowrequest entity representing the workflow request and generating aplurality of attributes of the workflow request entity using informationcontained in the workflow request.

In some embodiments, the smart entities are virtual representations of aphysical system or device, person or group of people, or space or groupof spaces.

In some embodiments, the inbound data include information technology(IT) data that describe one or more static characteristics of a device,person, or space. In some embodiments, the method includes transformingthe one or more characteristics of the device, person, or space into theone or more static attributes of the smart entities.

In some embodiments, the inbound data describe the plurality of smartentities and relationships therebetween.

In some embodiments, the inbound data include operational technology(OT) data that describe one or more dynamic states or conditions of adevice, person, or space. In some embodiments, the method includestransforming the one or more dynamic states or conditions of the device,person, or space into the one or more dynamic attributes of the smartentities.

In some embodiments, the inbound data include event data received inreal-time from a web-based service. In some embodiments, the web-basedservice includes a web-based advertising service, a website trafficmonitoring service, a web-based sales service, or a web-based analyticsservice.

In some embodiments, the inbound data include data samples collectedfrom internet of things (IoT) devices.

In some embodiments, the plurality of smart entities include one or moreobject entities representing a plurality of physical devices, one ormore data entities representing data generated by the physical devices,and one or more relational objects indicating relationshipsinterconnecting the object entities and the data entities.

In some embodiments, one or more of the smart entities includes a staticattribute identifying a physical device represented by the smart entityand a dynamic attribute storing a most recent value of a dynamicvariable associated with the physical device.

In some embodiments, the plurality of smart entities include an objectentity representing a physical device and a data entity representingdata generated by the physical device. The data entity may include astatic attribute identifying the object entity and a dynamic attributestoring a most recent value of a dynamic variable associated with thephysical device.

In some embodiments, the plurality of smart entities include an objectentity representing a physical device, a data entity representing datagenerated by the physical device, and a relational object including afirst attribute identifying the object entity and a second attributeidentifying the data entity.

Another implementation of the present disclosure is one or morenon-transitory computer readable media containing program instructions.When executed by one or more processors, the instructions cause the oneor more processors to perform operations including creating and managinga plurality of smart entities. Each of the smart entities includes aplurality of attributes. The operations include receiving inbound datafrom one or more enterprise applications, translating the inbound datainto values for one or more of the plurality of attributes, writing theplurality of attributes to the smart entities, reading the plurality ofattributes from the smart entities, translating the plurality ofattributes into outbound data, and providing the outbound data to theone or more enterprise applications.

In some embodiments, the instructions cause the one or more processorsto use a different communications protocol to communicate with each ofthe plurality of enterprise applications.

In some embodiments, the instructions cause the one or more processorsto translate between a first communications protocol or format used byone or more of the enterprise applications and a second protocol orformat used by the plurality of smart entities.

In some embodiments, the plurality of enterprise applications include atleast one of a workflow automation system, a customer relationshipmanagement system, a global information system, a device managementsystem, a human resources system, an accounting system, a marketingsystem, or a building management system.

In some embodiments, the plurality of enterprise applications include aworkflow automation system and the inbound data comprise a workflowrequest. In some embodiments, the instructions cause the one or moreprocessors to create a workflow request entity representing the workflowrequest and generate a plurality of attributes of the workflow requestentity using information contained in the workflow request.

In some embodiments, the smart entities are virtual representations of aphysical system or device, person or group of people, or space or groupof spaces.

In some embodiments, the inbound data include information technology(IT) data that describe one or more static characteristics of a device,person, or space. In some embodiments, the instructions cause the one ormore processors to transform the one or more characteristics of thedevice, person, or space into the one or more static attributes of thesmart entities.

In some embodiments, the inbound data describe the plurality of smartentities and relationships therebetween.

In some embodiments, the inbound data include operational technology(OT) data that describe one or more dynamic states or conditions of adevice, person, or space. In some embodiments, the instructions causethe one or more processors to transform the one or more dynamic statesor conditions of the device, person, or space into the one or moredynamic attributes of the smart entities.

In some embodiments, the inbound data include event data received inreal-time from a web-based service. In some embodiments, the web-basedservice includes a web-based advertising service, a website trafficmonitoring service, a web-based sales service, or a web-based analyticsservice.

In some embodiments, the inbound data include data samples collectedfrom internet of things (IoT) devices.

In some embodiments, the plurality of smart entities include one or moreobject entities representing a plurality of physical devices, one ormore data entities representing data generated by the physical devices,and one or more relational objects indicating relationshipsinterconnecting the object entities and the data entities.

In some embodiments, one or more of the smart entities includes a staticattribute identifying a physical device represented by the smart entityand a dynamic attribute storing a most recent value of a dynamicvariable associated with the physical device.

In some embodiments, the plurality of smart entities include an objectentity representing a physical device and a data entity representingdata generated by the physical device. The data entity may include astatic attribute identifying the object entity and a dynamic attributestoring a most recent value of a dynamic variable associated with thephysical device.

In some embodiments, the plurality of smart entities include an objectentity representing a physical device, a data entity representing datagenerated by the physical device, and a relational object including afirst attribute identifying the object entity and a second attributeidentifying the data entity.

Those skilled in the art will appreciate that the summary isillustrative only and is not intended to be in any way limiting. Otheraspects, inventive features, and advantages of the devices and/orprocesses described herein, as defined solely by the claims, will becomeapparent in the detailed description set forth herein and taken inconjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a web services system including a webservices platform, according to some embodiments.

FIG. 2 is a block diagram illustrating the web services platform of FIG.1 in greater detail including a software defined gateway, platformservices, and application, according to some embodiments.

FIG. 3 is a block diagram illustrating the software defined gateway ofFIG. 2 in greater detail, according to some embodiments.

FIG. 4 is another block diagram illustrating the software definedgateway of FIG. 2 in greater detail, according to some embodiments.

FIG. 5 is another block diagram illustrating the software definedgateway of FIG. 2 in greater detail, according to some embodiments.

FIG. 6 is an image of a user interface which can be generated by thesoftware defined gateway of FIG. 2, according to some embodiments.

FIG. 7 is a block diagram illustrating several gateway deploymenttopologies, according to some embodiments.

FIG. 8A is a block diagram illustrating a remote initiated gatewayupdate process, according to some embodiments.

FIG. 8B is a block diagram illustrating a remote initiated gatewayupdate process, according to some embodiments.

FIG. 9 is a block diagram illustrating another gateway update process,according to some embodiments.

FIG. 10 is a block diagram of a system for integrating smart entitieswith enterprise applications, according to some embodiments.

FIG. 11 is a block diagram illustrating an entity service of FIG. 2 ingreater detail, according to some embodiments.

FIG. 12 in an example entity graph of entity data, according to someembodiments.

FIG. 13 is a flow diagram of a process or method for updating/creatingan attribute of a related entity based on data received from a device,according to some embodiments.

FIG. 14 is an example entity graph of entity data, according to someembodiments.

FIG. 15 is a flow diagram of a process or method for analyzing data froma second related device based on data from a first device, according tosome embodiments.

DETAILED DESCRIPTION

Referring generally to the FIGURES, a web services platform andcomponents thereof are shown, according to some embodiments. The webservices platform includes a software defined gateway and severalplatform services (e.g., a timeseries service, an entity service, asecurity service, an analytics service, etc.). The software definedgateway is configured to translate between a protocol or format used bythe platform services and a variety of other protocols or formats usedby external systems or devices that communicate with the web servicesplatform. This allows the web services platform to ingest and processinbound data from a variety of different data sources and provide datato a variety of different external systems or devices.

The entity service is configured to create and manage smart entities.The smart entities include attributes that describe a correspondingsystem, device, person, relationship, or other items represented by thesmart entities. In some embodiments, the attributes include both staticand dynamic attributes. The entity service can use informationtechnology (IT) data received from external systems or devices togenerate values for the static attributes of the smart entities.Similarly, the entity service can use operational technology (OT) datareceived from external systems or devices to generate values for thedynamic attributes of the smart entities. These and other features ofthe web services platform are described in greater detail below.

Web Services System

Referring now to FIG. 1, a block diagram of a web services system 100 isshown, according to an exemplary embodiment. Web services system 100 isshown to include a web services platform 102. Web services platform 102can be configured to collect data from a variety of different datasources. For example, web services platform 102 is shown collecting datafrom a variety of devices 112-116, 122-126, 132-136, and 142-146. Insome embodiments, devices 112-116, 122-126, 132-136, and 142-146 areinternet of things (IoT) devices. Several examples of IoT devices whichcan provide data to web services platform 102 are described in detailwith reference to FIG. 2. While the devices described herein aregenerally referred to as IoT devices, it should be understood that, invarious embodiments, the devices references in the present disclosurecould be any type of devices capable to communication of data over anelectronic network.

Web services platform 102 can collect data from a variety of externalsystems or services. For example, web services platform 102 is shownreceiving weather data from a weather service 152, news data from a newsservice 154, documents and other document-related data from a documentservice 156, and media (e.g., video, images, audio, social media, etc.)from a media service 158. In some embodiments, web services platform 102generates data internally. For example, web services platform 102 mayinclude a web advertising system, a website traffic monitoring system, aweb sales system, or other types of platform services that generatedata. The data generated by web services platform 102 can be collected,stored, and processed along with the data received from other datasources. Web services platform 102 can collect data directly fromexternal systems or devices or via a network 104 (e.g., a WAN, theInternet, a cellular network, etc.). Web services platform 102 canprocess and transform collected data to generate timeseries data andentity data. Several features of web services platform 102 are describedin detail below.

Web Services Platform

Referring now to FIG. 2, a block diagram illustrating web servicesplatform 102 in greater detail is shown, according to some embodiments.Web services platform 102 can be configured to collect data from avariety of different data sources. For example, web services platform102 is shown collecting data from information systems 202, internet ofthings (IoT) devices 203, weather service 152, news service 154,document service 156, and media service 158. In some embodiments, webservices platform 102 separates data collection/ingestion; data storage,retrieval, and analysis; and data visualization into three differentlayers. This allows web services platform to support a variety ofapplications 230 that use the data and allows new applications 230 toreuse the existing infrastructure provided by platform services 220.

Information systems 202 can also include any type of system configuredto manage information associated with any of a variety of devices,systems, people and/or the activities thereof. For example, informationsystems 202 can include a human resources (HR) system, an accountingsystem, a payroll system, a customer relationship management (CRM)system, a marketing system, an enterprise resource planning system, orany other type of system that can be used to manage devices, systems,people, and/or the information associated therewith.

IoT devices 203 may include any of a variety of physical devices,sensors, actuators, electronics, vehicles, home appliances, and/or otheritems having network connectivity which enable IoT devices 203 tocommunicate with web services platform 102. For example, IoT devices 203can include smart home hub devices, smart house devices, doorbellcameras, air quality sensors, smart switches, smart lights, smartappliances, garage door openers, smoke detectors, heart monitoringimplants, biochip transponders, cameras streaming live feeds,automobiles with built-in sensors, DNA analysis devices, field operationdevices, tracking devices for people/vehicles/equipment, networkedsensors, wireless sensors, wearable sensors, environmental sensors, RFIDgateways and readers, IoT gateway devices, robots and other roboticdevices, GPS devices, smart watches, virtual/augmented reality devices,and/or other networked or networkable devices. In some embodiments, IoTdevices 203 include some or all of devices 112-116, 122-126, 132-136,and 142-146, as described with reference to FIG. 1.

Weather service 152, news service 154, document service 156, and mediaservice 158 may be the same as previously described. For example,weather service 152 can be configured to provide weather data to webservices platform 102. News service 154 can be configured to providenews data to web services platform 102. Document service 156 can beconfigured to provide documents and other document-related data to webservices platform 102. Media service 158 can be configured to providemedia (e.g., video, images, audio, social media, etc.) to web servicesplatform 102. In some embodiments, media service 158 includes aninternet-based advertising system or click tracking system. For example,media service 158 can provide event data to web services platform 102 inresponse to a web server delivering a webpage, advertisement, orreceiving a click from a user. Web services platform 102 can beconfigured to ingest, process, store, and/or publish data from these andany of a variety of other data sources.

Web services platform 102 is shown receiving two main types of data:information technology (IT) data and operational technology (OT) data.IT data may include data that describes various entities (e.g., people,spaces, devices, etc.) and the relationships therebetween. For example,IT data may include an entity graph that describes the relationshipsbetween spaces, equipment, and other entities (e.g., person A ownsdevice B, device B controls device C, sensor D provides input to deviceC, person E is part of employee team F, floor G contains room C, etc.).IT data may include human resources data that describes a set ofemployees and includes details about the employees (e.g., name, employeeID, job title/role, responsibilities, payroll information, address,etc.). IT data may include IoT device information (e.g., devicelocations, descriptions, device relationships, etc.), and/or otherinformation that provides context for the data received by web servicesplatform 102 or describes the entities managed by web services platform102. In some embodiments, IT data is preexisting/static and can beprovided to web services platform 102 as a batch. However, it iscontemplated that IT data can be updated after it has been created ifchanges occur to the entities or relationships described by the IT data.

As used herein, the term “static” refers to data, characteristics,attributes, or other information that does not change over time orchange infrequently. For example, a device name or address may bereferred to as a static characteristic of the device because it does notchange frequently. However, should be understood that “static” items arenot limited to permanently fixed information. Some types of static itemsmay change occasionally or infrequently. For example, a device addressmay be a type of static attribute that can be changed if desired but isnot expected to change frequently. Static data is contrasted withdynamic data that is expected to change relatively frequently.

OT data may include data that is generated and/or updated in real-timeas a result of operating the systems and devices that provide data toweb services platform 102. For example, OT data may include timeseriesdata received from IoT devices 203 (e.g., sensor measurements, statusindications, alerts, notifications, etc.), weather information receivedfrom weather service 152, a news feed received from news service 154,document updates received from document service 156, media updatesreceived from media service 158, and/or other types of telemetry data.In general, OT data can be described as real-time operational data,dynamic data, or streaming data, whereas IT data can be described asinstitutional or contextual data that is not continuously updated. Forexample, the OT data associated with a particular sensor may includemeasurements from the sensor, whereas the IT data associated with thesensor may include the sensor name, sensor type, and sensor location.

Web services platform 102 can process and transform/translate the OTdata and IT data using platform services 220 to generate timeseries dataand entity data. Throughout this disclosure, the term “raw timeseriesdata” is used to describe the raw data samples of OT data received byweb services platform 102. The term “derived timeseries data” is used todescribe the result or output of a transformation or other timeseriesprocessing operation performed by platform services 220 (e.g., dataaggregation, data cleansing, virtual point calculation, etc.). The rawtimeseries data and derived timeseries data can be provided to variousapplications 230 and/or stored in timeseries storage 214 (e.g., asmaterialized views of the raw timeseries data). The term “entity data”is used to describe the attributes of various entities (e.g., people,spaces, things, etc.) and relationships between entities. The entitydata can be created by platform services 220 as a result of processingthe IT data and/or OT data received by web services platform 102 and canbe stored in entity storage 216.

Before discussing web services platform 102 in greater detail, it shouldbe noted that the components of web services platform 102 can beintegrated within a single device (e.g., a web server, a supervisorycontroller, a computing system, etc.) or distributed across multipleseparate systems or devices. For example, the components of web servicesplatform 102 can be implemented as part of a cloud computing platformconfigured to receive and process data from multiple IoT devices andother data sources. In other embodiments, the components of web servicesplatform 102 can be implemented as part of a suite of cloud-hostedservices. In other embodiments, some or all of the components of webservices platform 102 can be components of a subsystem level controller,a plant controller, a device controller, a field controller, a computerworkstation, a client device, or any other system or device thatreceives and processes data from IoT devices or other data sources.

Still referring to FIG. 2, web services platform 102 is shown to includea communications interface 204. Communications interface 204 can includewired or wireless communications interfaces (e.g., jacks, antennas,transmitters, receivers, transceivers, wire terminals, etc.) forconducting data communications with information systems 202, IoT devices203, weather service 152, news service 154, document service 156, mediaservice 158, or other external systems or devices. Communicationsconducted via communications interface 204 can be direct (e.g., localwired or wireless communications) or via a communications network 104(e.g., a WAN, the Internet, a cellular network, etc.).

Communications interface 204 can facilitate communications between webservices platform 102 and external applications (e.g., remote systemsand applications) for allowing user control, monitoring, and adjustmentto web services platform 102 and/or the devices that communicate withweb services platform 102. Communications interface 204 can alsofacilitate communications between web services platform 102 and clientdevices (e.g., computer workstations, laptop computers, tablets, mobiledevices, etc.). Web services platform 102 can be configured tocommunicate with external systems and devices using any of a variety ofcommunications protocols (e.g., HTTP(S), WebSocket, CoAP, MQTT, etc.),industrial control protocols (e.g., MTConnect, OPC, OPC-UA, etc.),process automation protocols (e.g., HART, Profibus, etc.), homeautomation protocols, or any of a variety of other protocols.Advantageously, web services platform 102 can receive, ingest, andprocess data from any type of system or device regardless of thecommunications protocol used by the system or device.

Web services platform 102 is shown to include a processing circuit 206including a processor 208 and memory 210. Processor 208 can be a generalpurpose or specific purpose processor, an application specificintegrated circuit (ASIC), one or more field programmable gate arrays(FPGAs), a group of processing components, or other suitable processingcomponents. Processor 208 is configured to execute computer code orinstructions stored in memory 210 or received from other computerreadable media (e.g., CDROM, network storage, a remote server, etc.).

Memory 210 can include one or more devices (e.g., memory units, memorydevices, storage devices, etc.) for storing data and/or computer codefor completing and/or facilitating the various processes described inthe present disclosure. Memory 210 can include random access memory(RAM), read-only memory (ROM), hard drive storage, temporary storage,non-volatile memory, flash memory, optical memory, or any other suitablememory for storing software objects and/or computer instructions. Memory210 can include database components, object code components, scriptcomponents, or any other type of information structure for supportingthe various activities and information structures described in thepresent disclosure. Memory 210 can be communicably connected toprocessor 208 via processing circuit 206 and can include computer codefor executing (e.g., by processor 208) one or more processes describedherein. When processor 208 executes instructions stored in memory 210,processor 208 generally configures processing circuit 206 to completesuch activities.

In some embodiments, web services platform 102 includes a plurality ofprocessors, memories, interfaces, and other components distributedacross multiple devices or systems. For example, in a cloud-based ordistributed implementation, web services platform 102 may includemultiple discrete computing devices, each of which includes a processor208, memory 210, communications interface 204, software defined gateway212, and/or other components of web services platform 102. Tasksperformed by web services platform 102 can be distributed acrossmultiple systems or devices, which may be located within the building orfacility or distributed across multiple buildings or facilities. In someembodiments, multiple software defined gateways 212 are implementedusing different processors, computing devices, servers, and/or othercomponents and carry out portions of the features described herein.

Still referring to FIG. 2, web services platform 102 is shown to includea software defined gateway 212. Software defined gateway 212 can receivethe IT data and OT data via communications interface 204 and can providetranslated IT data and OT data to platform services 220, timeseriesstorage 214, and/or entity storage 216. For example, software definedgateway 212 can be configured to translate the incoming IT data and OTdata from a protocol or format used by the data sources into a protocolor format used by platform services 220. In some embodiments, the OTdata include timestamps and data values for various data points. Thedata values can be measured or calculated values, depending on the typeof data point. For example, a data point received from a temperaturesensor can include a measured data value indicating a temperaturemeasured by the temperature sensor. A data point received from a devicecontroller can include a calculated data value indicating a calculatedefficiency of the device. Software defined gateway 212 can receive datasamples from multiple different devices.

The data samples can include one or more attributes that describe orcharacterize the corresponding data points. For example, the datasamples can include a name attribute defining a point name or ID (e.g.,“B1F4R2.T-Z”), a device attribute indicating a type of device from whichthe data samples is received (e.g., temperature sensor, humidity sensor,pressure sensor, etc.), a unit attribute defining a unit of measureassociated with the data value (e.g., ° F., ° C., kPA, etc.), and/or anyother attribute that describes the corresponding data point or providescontextual information regarding the data point. The types of attributesincluded in each data point can depend on the communications protocolused to send the data samples to web services platform 102. For example,data samples received via a first protocol can include a variety ofdescriptive attributes along with the data value, whereas data samplesreceived via the second protocol may include a lesser number ofattributes (e.g., only the data value without any correspondingattributes).

In some embodiments, each data sample is received with a timestampindicating a time at which the corresponding data value was measured orcalculated. In other embodiments, software defined gateway 212 addstimestamps to the data samples based on the times at which the datasamples are received. Software defined gateway 212 can generate rawtimeseries data for each of the data points for which data samples arereceived. Each timeseries can include a series of data values for thesame data point and a timestamp for each of the data values. Forexample, a timeseries for a data point provided by a temperature sensorcan include a series of temperature values measured by the temperaturesensor and the corresponding times at which the temperature values weremeasured. An example of a timeseries which can be generated by softwaredefined gateway 212 is as follows:

[<key, timestamp₁, value₁>, <key, timestamp₂, value₂>, <key, timestamp₃,value₃>]where key is an identifier of the source of the raw data samples (e.g.,timeseries ID, sensor ID, etc.), timestamp identifies the time at whichthe ith sample was collected, and value_(i) indicates the value of theith sample.

Software defined gateway 212 can add timestamps to the data samples ormodify existing timestamps such that each data sample includes a localtimestamp. Each local timestamp indicates the local time at which thecorresponding data sample was measured or collected and can include anoffset relative to universal time. The local timestamp indicates thelocal time at the location the data point was measured at the time ofmeasurement. The offset indicates the difference between the local timeand a universal time (e.g., the time at the international date line).For example, a data sample collected in a time zone that is six hoursbehind universal time can include a local timestamp (e.g.,Timestamp=2016-03-18T14:10:02) and an offset indicating that the localtimestamp is six hours behind universal time (e.g., Offset=−6:00). Theoffset can be adjusted (e.g., +1:00 or −1:00) depending on whether thetime zone is in daylight savings time when the data sample is measuredor collected.

The combination of the local timestamp and the offset provides a uniquetimestamp across daylight saving time boundaries. This allows anapplication using the timeseries data to display the timeseries data inlocal time without first converting from universal time. The combinationof the local timestamp and the offset also provides enough informationto convert the local timestamp to universal time without needing to lookup a schedule of when daylight savings time occurs. For example, theoffset can be subtracted from the local timestamp to generate auniversal time value that corresponds to the local timestamp withoutreferencing an external database and without requiring any otherinformation.

In some embodiments, software defined gateway 212 organizes the rawtimeseries data. Software defined gateway 212 can identify a system ordevice associated with each of the data points. For example, softwaredefined gateway 212 can associate a data point with an IoT device, asensor, a networking device, or any other type of system or device. Invarious embodiments, software defined gateway 212 uses the name of thedata point, a range of values of the data point, statisticalcharacteristics of the data point, or other attributes of the data pointto identify a particular system or device associated with the datapoint. Software defined gateway 212 can then determine how that systemor device relates to the other systems or devices. For example, softwaredefined gateway 212 can determine that the identified system or deviceis part of a larger system (e.g., a vehicle control system) or isassociated with a particular space (e.g., a particular factory, a roomor zone of the factory, etc.). In some embodiments, software definedgateway 212 uses or creates an entity graph when organizing thetimeseries data. An example of such an entity graph is described ingreater detail with reference to FIGS. 12 and 14.

In some embodiments, software defined gateway 212 uses the IT data andOT data to update the attributes of various entities. As describedabove, an entity is a virtual representation (e.g., a data object) of aperson, space, system, device, or thing that provides data to webservices platform 102. For example, a vehicle entity may be a virtualrepresentation of a physical vehicle (e.g., a car, truck, airplane,boat, etc.). The vehicle entity may include a variety of attributes thatdescribe the vehicle. For example, the vehicle may include a “location”attribute that describes where the vehicle is located, a “contains”attribute that identifies one or more systems or devices of equipmentcontained within the vehicle, a “temperature” attribute that indicatesthe current air temperature within the vehicle, an “occupancy” attributethat indicates whether the vehicle is occupied or unoccupied, or any ofa variety of other attributes. Software defined gateway 212 can use theOT data to update the values of the attributes of various entities eachtime a new data sample or event is received. Similarly, software definedgateway 212 can use the IT data to update the values of the attributesof various entities when the relationships between entities or otherattributes indicated by the IT data changes. In other embodiments,entity attributes are updated by entity service 226 of platform services220.

Software defined gateway 212 can provide the timeseries data and entitydata to platform services 220 and/or store the timeseries data andentity data in timeseries storage 214 and entity storage 216,respectively. In some embodiments, timeseries storage 214 and entitystorage 216 can be data storage internal to web services platform 102(e.g., within memory 210) or other on-site data storage local to thelocation at which the IT data and OT data are collected. In otherembodiments, timeseries storage 214 and entity storage 216 can include aremote database, cloud-based data hosting, or other remote data storage.For example, timeseries storage 214 and entity storage 216 can includeremote data storage located off-site relative to the location at whichthe IT data and OT data are collected. Timeseries storage 214 can beconfigured to store the raw timeseries data obtained by software definedgateway 212, the derived timeseries data generated by platform services220, and/or directed acyclic graphs (DAGs) used by platform services 220to process the timeseries data. Similarly, entity storage 216 can beconfigured to store the IT data and OT data collected by softwaredefined gateway 212 and/or the entity data generated by platformservices 220.

Still referring to FIG. 2, BMS 200 is shown to include platform services220. Platform services 220 can receive the translated IT data and OTdata from software defined gateway 212 and/or retrieve the timeseriesdata and entity data from timeseries storage 214 and entity storage 216.Platform services 220 can include a variety of services configured toanalyze, process, and transform the IT data and OT data to createtimeseries data and entity data. For example, platform services 220 areshown to include a security service 222, an analytics service 224, anentity service 226, and a timeseries service 228. Security service 222can assign security attributes to the IT data and OT data to ensure thatthe IT data and OT data are only accessible to authorized individuals,systems, or applications.

Analytics service 224 can use the translated IT data and OT data asinputs to various analytics (e.g., fault detection, energy consumption,web traffic, revenue, etc.) to derive an analytic result from the ITdata and OT data. Analytics service 224 can apply a set of faultdetection rules to the IT data and OT data to determine whether a faultis detected at each interval of a timeseries. Fault detections can bestored as derived timeseries data. For example, analytics service 224can generate a new fault detection timeseries with data values thatindicate whether a fault was detected at each interval of thetimeseries. The fault detection timeseries can be stored as derivedtimeseries data along with the raw timeseries data in timeseries storage214.

Entity service 226 can use the translated IT data and OT data providedby software defined gateway 212 to create or update the attributes ofvarious entities managed by web services platform 102. Some entityattributes may be the most recent value of a data point provided to webservices platform 102 as OT data. For example, the “temperature”attribute of a vehicle entity may be the most recent value of atemperature data point provided by a temperature sensor located in thevehicle. Entity service 226 can use the IT data to identify thetemperature sensor located in the vehicle and can use the OT dataassociated with the identified temperature sensor to update the“temperature” attribute each time a new sample of the temperature datapoint is received. As another example, a “most recent view” attribute ofa webpage entity may indicate the most recent time at which the webpagewas viewed. Entity service 226 can use the OT data from a click trackingsystem or web server to determine when the most recent view occurred andcan update the “most recent view” attribute accordingly.

Other entity attributes may be the result of an analytic,transformation, calculation, or other processing operation based on theOT data and IT data. For example, entity service 226 can use the IT datato identify an access control device (e.g., an electronic lock, akeypad, etc.) at the entrance/exit of a vehicle. Entity service 226 canuse OT data received from the identified access control device to trackthe number of occupants entering and exiting the vehicle. Entity service226 can update a “number of occupants” attribute of an entityrepresenting the vehicle each time a person enters or exits the vehiclesuch that the “number of occupants” attribute reflects the currentnumber of occupants within the vehicle. As another example, a “totalrevenue” attribute associated with a product line entity may be thesummation of all the revenue generated from sales of the correspondingproduct. Entity service 226 can use the OT data received from a salestracking system (e.g., a point of sale system, an accounting database,etc.) to determine when a sale of the product occurs and identify theamount of revenue generated by the sale. Entity service 226 can thenupdate the “total revenue” attribute by adding the most recent salesrevenue to the previous value of the attribute.

In some embodiments, entity service 226 uses IT data and/or OT data frommultiple different data sources to update the attributes of variousentities. For example, an entity representing a person may include a“risk” attribute that quantifies the person's level of risk attributableto various physical, environmental, or other conditions. Entity service226 can use OT data from a card reader or IT data from a human resourcessystem to determine the physical location of the person at any giventime. Entity service 226 can use weather data from weather service 152to determine whether any severe weather is approaching the person'slocation. Similarly, entity service 226 can use emergency data from newsservice 154 or media service 158 to determine whether the person'slocation is experiencing any emergency conditions (e.g., active shooter,police response, fire response, etc.). Entity service 226 can use datafrom information systems 202 to determine whether the person's locationis experiencing any emergency conditions (e.g., fire, building lockdown,etc.) or environmental hazards (e.g., detected air contaminants,pollutants, extreme temperatures, etc.) that could increase the person'slevel of risk. Entity service 226 can use these and other types of dataas inputs to a risk function that calculates the value of the person's“risk” attribute and can update the person entity accordingly.

Still referring to FIG. 2, timeseries service 228 can apply varioustransformations, operations, or other functions to the raw timeseriesdata provided by software defined gateway 212 to generate derivedtimeseries data. In some embodiments, timeseries service 228 aggregatespredefined intervals of the raw timeseries data (e.g., quarter-hourlyintervals, hourly intervals, daily intervals, monthly intervals, etc.)to generate new derived timeseries of the aggregated values. Thesederived timeseries can be referred to as “data rollups” since they arecondensed versions of the raw timeseries data. The data rollupsgenerated by timeseries service 228 provide an efficient mechanism forapplications 230 to query the timeseries data. For example, applications230 can construct visualizations of the timeseries data (e.g., charts,graphs, etc.) using the pre-aggregated data rollups instead of the rawtimeseries data. This allows applications 230 to simply retrieve andpresent the pre-aggregated data rollups without requiring applications230 to perform an aggregation in response to the query. Since the datarollups are pre-aggregated, applications 230 can present the datarollups quickly and efficiently without requiring additional processingat query time to generate aggregated timeseries values.

In some embodiments, timeseries service 228 calculates virtual pointsbased on the raw timeseries data and/or the derived timeseries data.Virtual points can be calculated by applying any of a variety ofmathematical operations (e.g., addition, subtraction, multiplication,division, etc.) or functions (e.g., average value, maximum value,minimum value, thermodynamic functions, linear functions, nonlinearfunctions, etc.) to the actual data points represented by the timeseriesdata. For example, timeseries service 228 can calculate a virtual datapoint (pointID₃) by adding two or more actual data points (pointID₁ andpointID₂) (e.g., pointID₃=pointID₁+pointID₂). As another example,timeseries service 228 can calculate an enthalpy data point (pointID₄)based on a measured temperature data point (pointID₂) and a measuredpressure data point (pointID₆) (e.g., pointID₄=enthalpy(pointID₂,pointID₆)). The virtual data points can be stored as derived timeseriesdata.

Applications 230 can access and use the virtual data points in the samemanner as the actual data points. Applications 230 do not need to knowwhether a data point is an actual data point or a virtual data pointsince both types of data points can be stored as derived timeseries dataand can be handled in the same manner by applications 230. In someembodiments, the derived timeseries are stored with attributesdesignating each data point as either a virtual data point or an actualdata point. Such attributes allow applications 230 to identify whether agiven timeseries represents a virtual data point or an actual datapoint, even though both types of data points can be handled in the samemanner by applications 230.

Still referring to FIG. 2, web services platform 102 is shown to includeseveral applications 230 including an energy management application 232,monitoring and reporting applications 234, and enterprise controlapplications 236. Although only a few applications 230 are shown, it iscontemplated that applications 230 can include any of a variety ofapplications configured to use the derived timeseries generated byplatform services 220. In some embodiments, applications 230 exist as aseparate layer of web services platform 102 (i.e., separate fromplatform services 220 and software defined gateway 212). This allowsapplications 230 to be isolated from the details of how the IT data andOT data are collected and how the timeseries data and entity data aregenerated. In other embodiments, applications 230 can exist as remoteapplications that run on remote systems or devices (e.g., remote systemsand applications, client devices, etc.).

Applications 230 can use the derived timeseries data to perform avariety data visualization, monitoring, and/or control activities. Forexample, energy management application 232 and monitoring and reportingapplication 234 can use the derived timeseries data to generate userinterfaces (e.g., charts, graphs, etc.) that present the derivedtimeseries data to a user. In some embodiments, the user interfacespresent the raw timeseries data and the derived data rollups in a singlechart or graph. For example, a dropdown selector can be provided toallow a user to select the raw timeseries data or any of the datarollups for a given data point.

Enterprise control application 236 can use the derived timeseries datato perform various control activities. For example, enterprise controlapplication 236 can use the derived timeseries data as input to acontrol algorithm (e.g., a state-based algorithm, an extremum seekingcontrol (ESC) algorithm, a proportional-integral (PI) control algorithm,a proportional-integral-derivative (PID) control algorithm, a modelpredictive control (MPC) algorithm, a feedback control algorithm, etc.)to generate control signals for IoT devices 203.

Software Defined Gateway

Referring now to FIGS. 3-5, block diagrams illustrating software definedgateway 212 in greater detail is shown, according to an exemplaryembodiment. Unlike a traditional hardware gateway, software definedgateway 212 may be implemented entirely as software components. Softwaredefined gateway 212 may be responsible for collecting data from sensors,IoT devices, and other external systems and devices, as previouslydescribed. Software defined gateway 212 can store the collected datauntil the data can be processed by platform services 220 and sent toapplications 230 via a target data transmission protocol.

In some embodiments, software defined gateway 212 includes softwareintelligent data transmission algorithms to decide if the data at agiven stage of processing should be temporary, persistent, or keptin-memory. Intelligent data transmission can be used for optimizing datatransmission cost when cellular network services are used. In someembodiments, software defined gateway 212 is fault tolerant and hasdisaster recovery. For example, software defined gateway 212 can beconfigured to compensate for a power outage or network connection lossthat may result in an interruption of gateway processing. Softwaredefined gateway 212 can be bootstrapped and started automatically assoon as power returns or network connection restores to the device, andcan resume work from the point at which it was interrupted. Softwaredefined gateway 212 can be configured to handle system logging and canbalance the number of log entries stored on by software defined gateway212 with the number of log entries sent for external storage.

Referring specifically to FIG. 3, software defined gateway 212 is shownto include a device manager 302. Device manager 302 can be configured toidentify smart connected devices that send data to web services platform102. In some embodiments, device manager 302 identifies smart connecteddevices via a token sent by the smart connected devices and/or via anyother login credential. For example, the token may be an encrypted keythat device manager 302 can decrypt. Based on the identity of a deviceof the smart connected devices, device manager 302 may allow the deviceto retrieve data and/or software stored by web services platform 102.Device manager 302 can be further configured to generate control signalsfor smart connected devices and/or otherwise control the functionalityof smart connected devices. In some embodiments, device manager 302 isconfigured to perform manifest updating and/or software updating. Forexample, device manager 302 can be configured to store a manifest forsmart connected devices and/or store software files. In this regard,device manager 302 can store and/or retrieve data (e.g., a manifest) andcan update the manifest and/or software.

In some embodiments, device manager 302 manages virtual representationsof various devices that communicate with web services platform 102. Thevirtual representations may be a type of smart entity (e.g., “digitaltwins” or “shadows”) that represent physical devices and can be storedin entity storage 330. The smart entities may track various informationregarding the physical devices that they represent. In some embodiments,device manager 302 is configured to update the smart entities when newIT data or OT data that affects the smart entities are received.

Still referring to FIG. 3, software defined gateway 212 is shown toinclude a real-time ingestion service 304 and a message queue 306.Real-time ingestion service 304 can be configured to receive and handleHTTP(S) posts and other types of real-time data, whereas message queue306 can be configured to receive and handle messages received via aqueuing protocol. In some embodiments, the data received via real-timeingestion service 304 and message queue 306 includes timeseries data andother types of OT data collected by software defined gateway 212 inreal-time. Adaptors 308 and 310 can translate the data received viareal-time ingestion service 304 and message queue 306 and store the dataas timeseries 314. In some embodiments, IT and OT streaming dataprocessing service 312 interacts with timeseries 314 to process the ITdata, OT data, and/or other types of data used to generate timeseries314.

Software defined gateway 212 is shown to include an entity and objectingestion service 320. Entity and object ingestion service 320 can beconfigured to receive and handle incoming IT data. For example, entityand object ingestion service 320 can be configured to receive PDF data,image data (e.g., JPG, PNG, BMP, etc.), video data, word data, entityinformation, and/or other types of IT data, as previously described.Entity and object ingestion service 320 can provide the IT data to ITand OT streaming data processing service 312 for further processingand/or to storage abstraction service 316. Storage abstraction service316 can be configured to store the processed IT and OT data usingdatabase service 318. Storage abstraction service 316 can also createand store an index of the processed IT and OT data in content index 326.

Search index updater 322 can use the index information stored in contentindex 322 to update a search index for the IT and OT data. Entityrelationship updater 324 can be configured to determine whether the ITdata defines new entity relationships by comparing the IT data withentity graph 328. If new entity relationships are detected, entityrelationship updater 324 can update the entity relationships in entitygraph 328. Entity relationship updater 324 can also store updated entityinformation in entity storage 330. Data service API 332 can beconfigured to interface with content index 326, entity graph 328, andentity storage 330 to allow the indexed content, entity graph, andentities to be viewed, queried, retrieved, or otherwise presented to auser 334 or other external system, device, or service. Data service API332 can also interface with entity and object ingestion service 320 toaccess timeseries data and eventseries data.

Referring now to FIG. 4, software defined gateway 212 is shown toinclude northbound protocol adaptors 336, southbound protocol adaptors342, core services 338, and API services 340. Southbound protocoladaptors 342 may be responsible for the discovery of connectedsub-systems including sensors and actuators and for collecting data.Southbound protocol adaptors 342 can be configured to communicate andtranslate data using industrial control protocols (e.g., MTConnect, OPC,OPC-UA, etc.), process automation protocols (e.g., HART, Profibus,etc.), home automation protocols, or any of a variety of otherprotocols.

In some embodiments, southbound protocol adaptors 342 are configured toconnect non-IP and LAN-based IP devices and collect data (e.g., pullingdata from legacy devices). Southbound protocol adaptors 342 may includeplug-in software architecture plays to provide extensibility. Each ofsouthbound protocol adaptors 342 can provide a set of common operationsand data models, which allows a software defined gateway 212 tocommunicate and exchange data with a variety of different types ofdevices that use different communication protocols. In some embodiments,southbound protocol adaptors 342 include protocol drivers that providevarious common operation interfaces via APIs or inter-processcommunication. For example, southbound protocol adaptors 342 can managedriver processes including start, stop, restart and kill driverprocesses. Southbound protocol adaptors 342 manage diver configurationdata including passing initial configuration data to the driver process,as well as reconfiguration requests. Southbound protocol adaptors 342can request sub-system discovery, request data reading and subscriptionof specific data points, and can request driver performance and statusinformation.

In some embodiments, southbound protocol adaptors 342 include a hostprocess that manages protocol drivers responsible for posting collecteddata to core services 338. This allows software defined gateway 212 tooptimize the data aggregation, enrichment and transmission at a givenstage of processing (e.g., be temporary, persistent, or kept in-memory)and computational constraints. Core services 338 can perform appropriatemessage aggregation, enrichment, transformation, and transmission toallow web services platform 102 to store and process the collected data.API services 340 can be configured to interface with other systems,devices, and processes to allow interaction with core services 338 andother components of software defined gateway 212.

Northbound protocol adaptors 336 can be configured to communicate andtranslate data using various other protocols (e.g., HTTP(S), WebSocket,CoAP, MQTT, etc.) to allow web services platform 102 to interact withsystems and devices using such communications protocols. In someembodiments, northbound protocol adaptors 336 are responsible forsending data to cloud services via a standard protocol such as HTTP(S),AMQP and/or MQTT.

Referring now to FIG. 5, core services 338 are shown to include aconfiguration web application 402. Configuration web application 402 maybe a web-based application that allows for configuration of softwaredefined gateway 212. Configuration web application 402 may allow a userto view, set, or adjust the network configuration for both WAN and LAN,drivers, users, trending or telemetry data setup. An example of aninterface 600 which can be generated and presented by configuration webapplication 402 is shown in FIG. 6. It should be understood that anyapplication or feature described herein as being web-based orcloud-based could alternatively be implemented within software (e.g., anapp) resident on a device without departing from the scope of thepresent disclosure.

Gateway command handler 406 can be configured to provide an interfacethat allows a remote user or application to perform gateway managementand unified driver management operations. For example, gateway commandhandler 406 allows an operator to update gateway software remotely,modify or create configuration through a unified gateway and connecteddevice management console. A management console can use gateway commandhandler 406 to manage many connected gateway devices. Logger 410 can beconfigured to perform system logging for performance optimization anddiagnostics purposes. Registration 412 can be configured to register andprovision software defined gateway 212 as a connected IoT device.

Protocol and resource translation 408 can be configured to expose legacydata points (i.e., a resource) as a trend to the platform services 220.Protocol and resource translation 408 can also expose legacy data pointsto be updated from remote mobile applications and make such pointsaccessible from internet protocols (e.g., a resource in RESTfulprotocol). Accordingly, protocol and resource translation 408 canprovide a mechanism to create a virtual resource accessible via IoTservice and to perform real-time semantic mediation between a legacysystem's resource and a corresponding virtual resource while maintaininguniform semantics. For example, a temperature reading from a legacytemperature sensor is typically not accessible via the internet.However, protocol and resource translation 408 can create a virtualresource (e.g., a RESTful endpoint) and make it available to IoTservices and applications. This could be a simple mapping table orcomplex translation service.

Command and control for drivers 414 can be configured to facilitatecommunication between IoT services and legacy systems through a seriesof abstraction layers and services. Such command and control abstractionprovides uniform management capabilities among various protocol adapters(or called protocol drivers). Command and control for drivers 404 canprovide a set of instructions including start, stop, restart, and killdriver process. Command and control for drivers 404 can providenotifications of driver configuration (e.g., IP address of IoT device)to driver process to allow a driver to update its operatingconfiguration. Command and control for drivers 404 can also performsub-system discovery requests, on-demand data reading from the legacydevice, and inquiries of driver performance and status.

Core services 338 is shown to include two distinct messaging engines 404and 322. Messaging engine 404 can be configured to provide messagingbetween software defined gateway 212 and a cloud service, whereasmessaging engine 422 can be configured to provide messaging betweensoftware defined gateway 212 and various driver plug-ins (e.g., an MQTTdriver 424, a AMQP driver 426, a HTTPS driver 428, etc.). Messagingengine 422 is more closely related to inter-process communication amonggateway core services 338 and protocol drivers 424-428. Messaging engine414 can be implemented with inter-process communication techniquesincluding pipe, message queue, and shared memory. Messaging engine 422can be implemented with a standard IoT messaging protocols (e.g., MQTT,AMQP, HTTP(S), etc.).

Local storage 416 can be configured to store data locally within coreservices 338. Telemetry data transmission 418 can be configured totransmit data to remote systems and devices for remote storage. Gatewayoperating system 420 provides an operating environment in which theother components, services, and modules of software defined gateway 212operate.

Gateway Deployment Topology

Referring now to FIG. 7, a block diagram illustrating several differentgateway deployment topologies is shown. A gateway is not just apass-through proxy device that forwards data from sensors or otherdevices to services. Sending all the information collected by devices tobackend services would be highly ineffective in terms of performance andnetwork utilization. An IoT gateway can perform certain pre-processingof information close to a data source before they're sent to the cloudservice. Examples of pre-processing include message filtering, simplepattern detection, and aggregation.

FIG. 7 shows three types of gateway deployments: a hardware gateway 710,a software gateway 706, and a software defined gateway 212. Hardwaregateway 710 is implemented as a hardware device installed on site withthe equipment that sends data to gateway 710. For example, sensor 702sends measurements to controller 704. Controller 704 and actuator 706communicate with a supervisory controller 708 using legacy communication(e.g., a serial cable). Supervisory controller 708 communicates withhardware gateway 710, which sends data to web services platform 102through a firewall 730.

Software gateway 706 is embedded into an IP-enabled device such as an IPactuator 712. IP actuator 712 uses a software gateway development SDK tomake registration, provisioning, and telemetry of the embedded softwaregateway 706. In some embodiments, the SDK comes with common runtimes tomake an IP device IoT gateway compliant. Software gateway 706 can bedeployed as a virtual machine or as a containerized software component.

Software defined gateway 212 is implemented in the cloud as a softwareonly option that uses legacy IP communication protocols via VPNtunneling. Software defined gateway 212 can perform protocol and messagetranslation between legacy IP protocols and IoT messaging protocols. Inaddition, software defined gateway 212 can perform registration andprovisioning of a legacy IP device into cloud services.

Gateway Software Update

Referring now to FIGS. 8A-9, block diagrams illustrating severaltechniques for updating the software of gateway 212 are shown, accordingto various exemplary embodiments. It may be desirable to update thesoftware of gateway 212. After the development of the gateway softwareonto a device and delivery to the field, the ability to maintain andupdate gateway software may be limited. Accordingly, the ability todownload software updates over-the-air is particularly advantageous froma security and a maintenance perspective, as it can minimize thedelivery time of critical security fixes.

FIG. 8A illustrates a remote-initiated technique for updating thesoftware of gateway 212. In this approach, a remote management server802 pushes the proper version of the software to gateway 212. Forexample, remote management server 802 may send a notification to gateway212 that a new software version is available. This requires update pushaction from remote management server 802. Gateway 212 can then connectto and retrieve the latest version of the gateway software from asoftware repository 804.

FIG. 8B illustrates a gateway-initiated technique for updating thesoftware of gateway 212. In this approach, gateway 212 is responsiblefor connecting to software repository 804 and comparing the version ofsoftware installed on gateway 212 with the version of software availableat software repository 804. If there is an update, gateway 212 canautomatically download the latest version of the software. A softwareupdate monitoring agent can be installed in gateway 212 to communicatewith remote management server 802 and/or software repository 804. Thisis the most scalable approach because it doesn't require any centralizedcoordination of the deployment action.

FIG. 9 illustrates a technique that can be used when not all protocoland/or subsystem connectivity protocols can be deployed in a singlegateway software package. Some of the system connectivity protocols mayrequire a larger server class machine to deploy. In this technique, adevice identifies an embedded operating system/driver and service percustomer gateway (step 902). The customer protocol and subsystemconnectivity is selected (step 904) and the per customer gatewayprotocol list mapping is generated (step 906). Embedded operatingsystem/drivers, and associated services are built (step 908) andpublished to a content management and version control system (step 910).The embedded operating system/driver and service per customer gateway isstored in a database (step 912) and the device is notified that there isnew firmware (step 914). The protocol and subsystem configuration isthen used to perform protocol and configuration (step 916).

Integration with Enterprise Applications

Referring now to FIG. 10, a block diagram of a system 1000 is shown,according to an exemplary embodiment. System 1000 is shown to includeenterprise applications 1002, software defined gateway 212, entityservice 226, and smart entities 1020. As described above, softwaredefined gateway 212 can be configured to receive IT data and OT datafrom a plurality of different data sources, translate the incoming ITdata and OT data into a format or protocol used by data platform 102,and provide the translated IT data and OT data to entity service 226. Insome embodiments, the data sources include various enterpriseapplications 1002 such as a workflow automation system 1004, a customerrelationship management (CRM) system 1006, a global information system(GIS) 1008, a device management system 1010, a human resource system1012, an accounting system 1014, and/or a marketing system 1016.

The IT data received from enterprise applications 1002 may include datathat describes various entities (e.g., people, spaces, devices, etc.)and the relationships therebetween. For example, IT data from humanresource system 1012 may include data that describes a set of employeesand includes details about the employees (e.g., name, employee ID, jobtitle/role, responsibilities, payroll information, address, etc.). ITdata from device management system 1010 may include device informationdata that various IoT devices that communicate with web servicesplatform 102.

Entity service 226 can use the incoming IT data to generate values forvarious static attributes of smart entities 1020. For example, entityservice can use IT data from human resources system 1012 to populateand/or generate values for the static attributes of person entity 1022.The static attributes may describe a particular person that personentity 1022 represents. For example, the static attributes of personentity 1022 are shown to include a name attribute (e.g., “John Smith”),a role attribute (e.g., “Service Tech”), an employee ID attribute (e.g.,“123”), a card ID attribute (e.g., “456”), and a plurality of otherattributes that describe the static characteristics of a particularperson. As another example, entity service can use IT data from devicemanagement system 1010 to populate and/or generate values for the staticattributes of point entity 1022. The static attributes may describe aparticular point (e.g., a temperature point). For example, the staticattributes of point entity 1024 are shown to include a point nameattribute (e.g., “AI 201-1”), a point type (e.g., “analog input”), aunit of measure (e.g., “Degrees F.”), and a data source (e.g., “Sensor1”).

In some embodiments, the IT data received from enterprise applications1002 include workflow requests. For example, workflow automation system1004 can receive a request from a customer indicating that a particularpiece of equipment requires service. Workflow automation system 1004 cancreate a work order based on the customer request and provide the workorder to web services platform 102 via software defined gateway 212.Entity service 226 can translate the incoming work order into a workflowrequest entity 1026 that includes a plurality of attributes thatdescribe the work order. For example, workflow request entity 1026 isshown to include an ID attribute uniquely identifying the request (i.e.,“request 123”), a type attribute that indicates the type of request(e.g., “service request”), a customer attribute indicating a customerassociated with the request (e.g., “ABC Co.”), a location attributeindicating a location at which service is requested (e.g., “123 MainSt.”), an equipment attribute identifying the equipment requiringservice (e.g., “Router 1”), a model attribute identifying a model numberof the equipment requiring service (e.g., “ABC123”), and an issueattribute indicating why the equipment requires service (e.g., “won'tpower on”).

The OT data received from enterprise applications 1002 may include datathat is generated and/or updated in real-time as a result of operatingthe systems and devices that provide data to web services platform 102.For example, OT data may include timeseries data received from devicemanagement system 1010 (e.g., sensor measurements, status indications,alerts, notifications, etc.), weather information received from weatherservice 152, a news feed received from news service 154, documentupdates received from document service 156, media updates received frommedia service 158, and/or other types of telemetry data. In general, OTdata can be described as real-time operational data or streaming datawhereas IT data can be described as institutional or contextual datathat is not continuously updated. For example, the OT data associatedwith a particular sensor may include measurements from the sensor,whereas the IT data associated with the sensor may include the sensorname, sensor type, and sensor location.

Entity service 226 can use the incoming OT data to derive or generatevalues for one or more dynamic attributes of smart entities 1020. Forexample, the “Location” attribute of person entity 1022 may indicate thecurrent location of the person represented by person entity 1022. Entityservice 226 can use the incoming OT data from a mobile device carried bya person to determine the current location of the person and can updatethe location attribute of person entity 1022 accordingly. Similarly, the“Value” attribute of point entity 1024 may indicate the current value ofthe temperature point represented by point entity 1024. Entity service226 can use the incoming OT data from a temperature sensor to determinethe current value of the temperature point (e.g., “67”) and can updatethe value attribute of point entity 1024 accordingly.

As shown in FIG. 10, the integration of enterprise applications 1002with smart entities 1020 is bidirectional. In the inbound direction,incoming IT data and OT data from enterprise applications 1002 can beingested by software defined gateway 212 and converted into static anddynamic attributes of smart entities 1020 by entity service 226. In theoutbound direction, the attributes of smart entities 1020 can be read byentity service 226 and translated into IT data and OT data by softwaredefined gateway 212. In some embodiments, software defined gateway 212translates the outbound IT data and OT data into a protocol or formatused by enterprise applications 1002. The translated IT data and OT datacan then be provided to enterprise applications 1002 for use inperforming an activity or process managed by enterprise applications1002 (e.g., building management, device management, customer management,personnel management, etc.).

Smart Entities and Entity Service

Referring now to FIG. 11, a block diagram illustrating entity service226 in greater detail is shown, according to some embodiments. Entityservice 226 is a component of web services platform 102 that processesthe incoming IT data and OT data collected via software defined gateway212. In some embodiments, entity service 226 uses the IT data and OTdata to create or update various types of entities. Entity service 226registers and manages various devices and entities in platform services220. According to various embodiments, an entity may be any person,place, or physical object, hereafter referred to as an object entity.Further, an entity may be any event, data point, or record structure,hereinafter referred to as data entity. In addition, relationshipsbetween entities may be defined by relational objects.

In some embodiments, an object entity may be defined as having at leastthree types of attributes. For example, an object entity may have astatic attribute, a dynamic attribute, and a behavioral attribute. Thestatic attribute may include any unique identifier of the object entityor characteristic of the object entity that either does not change overtime or changes infrequently (e.g., a device ID, a person's name orsocial security number, a place's address or room number, and the like).In some embodiments, the static attribute is derived from the IT datareceived via software defined gateway 212. The dynamic attribute mayinclude a property of the object entity that changes over time (e.g.,location, age, measurement, data point, and the like). In someembodiments, the dynamic attribute is derived from the OT data receivedvia software defined gateway 212. In some embodiments, the dynamicattribute of an object entity may be linked to a data entity. In thiscase, the dynamic attribute of the object entity may simply refer to alocation (e.g., data/network address) or static attribute (e.g.,identifier) of the linked data entity, which may store the data (e.g.,the value or information) of the dynamic attribute. Accordingly, in somesuch embodiments, when a new data point is received for the objectentity (e.g., a new sample of OT data is received via software definedgateway 212), only the linked data entity may be updated, while theobject entity remains unchanged. Therefore, resources that would havebeen expended to update the object entity may be reduced.

However, the present disclosure is not limited thereto. For example, insome embodiments, there may also be some data that is updated (e.g.,during predetermined intervals) in the dynamic attribute of the objectentity itself. For example, the linked data entity may be configured tobe updated each time a new data point is received, whereas thecorresponding dynamic attribute of the object entity may be configuredto be updated less often (e.g., at predetermined intervals less than theintervals during which the new data points are received). In someimplementations, the dynamic attribute of the object entity may includeboth a link to the data entity and either a portion of the data from thedata entity or data derived from the data of the data entity. Forexample, consider an embodiment in which periodic odometer readings arereceived from a connected car as a type of OT data. An object entitycorresponding to the car could include the last odometer reading and alink to a data entity that stores a series of the last ten odometerreadings received from the car.

The behavioral attribute may define a function of the object entity, forexample, based on inputs, capabilities, and/or permissions. For example,behavioral attributes may define the types of inputs that the objectentity is configured to accept, how the object entity is expected torespond under certain conditions, the types of functions that the objectentity is capable of performing, and the like. As a non-limitingexample, if the object entity represents a person, the behavioralattribute of the person may be his/her job title or job duties, userpermissions to access certain systems, expected location or behaviorgiven a time of day, tendencies or preferences based on connectedactivity data received by entity service 226 (e.g., social mediaactivity), and the like. As another non-limiting example, if the objectentity represents a device, the behavioral attributes may include thetypes of inputs that the device can receive, the types of outputs thatthe device can generate, the types of controls that the device iscapable of, the types of software or versions that the device currentlyhas, known responses of the device to certain types of input (i.e.,behavior of the device defined by its programming), and the like.

In some embodiments, the data entity may be defined as having at least astatic attribute and a dynamic attribute. The static attribute of thedata entity may include a unique identifier or description of the dataentity. In some embodiments, the static attribute is based on the ITdata received via software defined gateway 212. For example, if the dataentity is linked to a dynamic attribute of an object entity, the staticattribute of the data entity may include an identifier that is used tolink to the dynamic attribute of the object entity. In some embodiments,the dynamic attribute of the data entity represents the data for thedynamic attribute of the linked object entity. For example, the dynamicattribute is based on the OT data received via software defined gateway212. In some embodiments, the dynamic attribute of the data entity mayrepresent some other data that is analyzed, inferred, calculated, ordetermined based on data from a plurality of data sources.

In some embodiments, the relational object may be defined as having atleast a static attribute. The static attribute of the relational objectmay semantically define the type of relationship between two or moreentities. For example, in a non-limiting embodiment, a relational objectfor a relationship that semantically defines that Entity A has a part ofEntity B, or that Entity B is a part of Entity A may include:

-   -   hasPart{Entity A, Entity B}        where the static attribute hasPart defines what the relationship        is of the listed entities, and the order of the listed entities        or data fields of the relational object specifies which entity        is the part of the other (e.g., Entity A→hasPart→Entity B).

In various embodiments, the relational object is an object-orientedconstruct with predefined fields that define the relationship betweentwo or more entities, regardless of the type of entities. For example,platform services 220 can provide a rich set of pre-built entity modelswith standardized relational objects that can be used to describe howany two or more entities are semantically related, as well as how datais exchanged and/or processed between the entities. Accordingly, aglobal change to a definition or relationship of a relational object atthe system level can be effected at the object level, without having tomanually change the entity relationships for each object or entityindividually. Further, in some embodiments, a global change at thesystem level can be propagated through to third-party applicationsintegrated with IoT platform services 320 such that the global changecan be implemented across all of the third-party applications withoutrequiring manual implementation of the change in each disparateapplication.

For example, referring to FIG. 12, an example entity graph of entitydata is shown, according to some embodiments. The term “entity data” isused to describe the attributes of various entities and therelationships between the entities. For example, entity data may berepresented in the form of an entity graph. In some embodiments, entitydata includes any suitable predefined data models (e.g., as a table,JSON data, and/or the like), such as entity type or object, and furtherincludes one or more relational objects that semantically define therelationships between the entities. The relational objects may help tosemantically define, for example, hierarchical or directed relationshipsbetween the entities (e.g., entity X controls entity Y, entity A feedsentity B, entity 1 is located in entity 2, and the like). For example,an object entity (e.g., IoT device) may be represented by entity type orobject, which generally describes how data corresponding to the entitywill be structured and stored.

For example, an entity type (or object) “Activity Tracker” may berepresented via the below schema:

Activity Tracker {  Type,  Model No,  Device Name,  Manufactured date, Serial number,  MAC address,  Location,  Current Time,  Current Date, Current Heart Rate,  Daily Number of Steps,  Target Daily Number ofSteps,  Point schedule }where various attributes are static attributes (e.g., “Type,” “ModelNumber,” “Device Name,” etc.), dynamic attributes (e.g., “Location,”“Current Time,” etc.), or behavioral attributes (e.g., “Current HeartRate,” “Daily Number of Steps,” etc.) for the object entity “ActivityTracker.” In a relational database, the object “Activity Tracker” is atable name, and the attributes represents column names.

An example of an object entity data model for a person named John Smithin a relational database may be represented by the below table:

First Name Last Name Tel. No. Age Location Job Title John Smith(213)123-4567 36 Home Engineerwhere various attributes are static attributes (e.g., “First Name,”“Last Name,” etc.), dynamic attributes (e.g., “Age,” “Location,” etc.),or behavioral attributes (e.g., “Engineer”) for the object entity “JohnSmith.”

An example data entity for the data point “Daily Number of Steps” forthe “Activity Tracker” owned by John Smith in a relational database maybe represented by the below table:

Present-Value Description Device_Type Unit of measure 2365 “John'scurrent daily Activity 2 feet/step number of steps” Trackerwhere various attributes are static attributes (e.g., “Description” and“Device_Type”) and dynamic attributes (e.g., “Present-Value”).

While structuring the entities via entity type or object may help todefine the data representation of the entities, these data models do notprovide information on how the entities relate to each other. Forexample, an IoT application, controller, or platform may need data froma plurality of sources as well as information on how the sources relateto each other in order to provide a proper decision, action, orrecommendation. Accordingly, in various embodiments, the entity datafurther includes the relational objects to semantically define therelationships between the entities, which may help to increase speeds inanalyzing data, as well as provide ease of navigation and browsing. Insome embodiments, the entity relationship specified by the relationalobjects are derived from the IT data received via software definedgateway 212.

For example, still referring to FIG. 12, an entity graph 1200 for theActivity Tracker object entity 1202 includes various class entities(e.g., User, Address, SetPoint Command, and Activity Object), objectentities (e.g., John and Activity Tracker), relational objects (e.g.,isAKindOf, Owns, isLinked, hasStorage, and hasOperation), and dataentities (AI 201-01, TS ID 1, Daily Average 1, AO 101-1, and Geo301-01). The relational objects describe the relationships between thevarious class, object, and data entities in a semantic and syntacticmanner, so that an application or user viewing the entity graph 1200 canquickly determine the relationships and data process flow of theActivity Tracker object entity 1202, without having to resort to a database analyst or engineer to create, index, and/or manage the entities(e.g., using SQL or NoSQL). In some embodiments, each of the entities(e.g., class entity, object entity, and data entity) represents a nodeon the entity graph 1200, and the relational objects define therelationships or connections between the entities (or nodes).

For example, the entity graph 1200 shows that a person named John(object entity) 1204 isAKindOf (relational object) 1206 User (classentity) 1208. John 1204 Owns (relational object) 1210 the ActivityTracker (object entity) 1202. The Activity Tracker 1202 has a locationattribute (dynamic attribute) 512 that isLinked (relational object) 1214to Geo 301-01 (data entity) 1216, which isAKindOf (relational object)1218 an Address (class entity) 1220. Accordingly, Geo 301-01 1216 shouldhave a data point corresponding to an address.

The Activity Tracker 1202 further includes a “Daily Number of Steps”attribute (dynamic attribute) 1222 that isLinked (relational object) 524to AI 201-01 (data entity) 526. AI 201-01 526 isAKindOf (relationalobject) 1228 Activity Object (class entity) 1230. Thus, AI 201-01 1226should contain some sort of activity related data. AI 201-01 1226hasStorage (relational object) 532 at TS ID 1 (data entity) 1234. AI201-01 1226 hasOperation (relational object) 1236 of Daily Average 1(data entity) 1238, which isAKindOf (relational object) 1240 AnalyticOperator (class entity) 1242. Accordingly, Daily Average 1 should holdsome data that is the result of an analytic operation.

In this example, the data entity AI 201-01 1226 may be represented bythe following data model:

point {  name: “AI 201-01”;  type: “analog input”;  value: 2365;  unit:“2 feet/step”;  source: “Pedometer Sensor 1” }where “point” is an example of a data entity that may be created byplatform services 220 to hold the value for the linked “Daily Number ofSteps” 1222 dynamic attribute of the Activity Tracker entity 1202, andsource is the sensor or device in the Activity Tracker device 1202 thatprovides the data to the linked “Daily Number of Steps” 1222 dynamicattribute.

The data entity TS Id 1 1234 may be represented, for example, by thefollowing data model:

timeseries {  name: “TS Id 1”;  type: “Daily Average”;  values: “[2365,10683, 9166, 8254, 12982];  unit: “2 feet/step”;  point: “AI 201-01”; source: “Daily Average 1” }where the data entity Daily Average 1 1238 represents a specificanalytic operator used to create the data entity for the average dailytimeseries TS Id 1 1234 based on the values of the corresponding dataentity for point AI 201-01 1226. The relational object hasOperationshows that the AI 201-01 data entity 1226 is used as an input to thespecific logic/math operation represented by Daily Average 1 538. TS Id1 1234 might also include an attribute that identifies the analyticoperator Daily Average 1 1238 as the source of the data samples in thetimeseries.

Still referring to FIG. 12, the entity graph 1200 for Activity Tracker1202 shows that the “Target Daily Number of Steps” attribute (dynamicattribute) 1244 isLinked (relational attribute) 1246 to the data entityAO 101-01 (data entity) 1248. AO 101-01 data entity isAKindOf(relational attribute) 1250 a SetPoint Command (class entity) 1252.Thus, the data in data entity AO 101-01 1248 may be set via a command bythe user or other entity. Accordingly, in various embodiments, entitygraph 1200 provides a user friendly view of the various relationshipsbetween the entities (or nodes) and data processing flow, which providesfor ease of navigation, browsing, and analysis of data.

In some embodiments, any two entities (or nodes) can be connected toeach other via one or more relational objects that define differentrelationships between the two entities (or nodes). For example, stillreferring to FIG. 12, the object entity John 1204 is shown to beconnected to the object entity Activity Tracker 1202 via one relationalobject Owns 1210. However, in another embodiment, the object entity John1204 can be connected to the object entity Activity Tracker 1202 viamore than one relational object, such that, in addition to therelational object Owns 1210, another relational object can defineanother relationship between the object entity John 1204 and the objectentity Activity Tracker 1202. For example, another relational objectsuch as isWearing or isNotWearing can define whether or not John (or theentity object for John 1204) is currently wearing (e.g., via therelational object isWearing) or currently not wearing (e.g., via therelational object isNotWearing) the activity tracker (or the entityobject for the activity tracker 1202).

In this case, when the data entities associated with the activitytracker object entity 1202 indicates that John is wearing the activitytracker (e.g., which may be determined from the daily number of stepsattribute 1222 or the location attribute 1212), the relational objectisWearing may be created between the object entity for John 1210 and theobject entity for activity tracker 1202. On the other hand, when thedata entities associated with the activity tracker object entity 1202indicates that John is not wearing the activity tracker (e.g., which maybe determined when the daily number of steps attribute 1222 for acurrent day is zero or the location attribute 1212 shows a differentlocation from a known location of John), the relational objectisNotWearing can be created between the object entity for John 1210 andthe object entity for activity tracker 1202. For example, the relationalobject isNotWearing can be created by modifying the relational objectisWearing or deleting the relational object isWearing and creating therelational object isNotWearing. Thus, in some embodiments, therelational objects can be dynamically created, modified, or deleted asneeded or desired.

Referring again to FIG. 11, entity service 226 may transform theincoming IT data and OT data received via software defined gateway 212into data corresponding to entity data. For example, as discussed abovewith reference to FIG. 12, entity service 226 can create data entitiesthat use and/or represent data points in the OT data. Entity service 226includes a web service 1102, a registration service 1104, a managementservice 1106, a transformation service 1108, a search service 1110, andstorage 1112. In some embodiments, storage 1112 may be internal storageor external storage. For example, storage 1112 may be entity storage 216(see FIG. 2), internal storage with relation to entity service 226,and/or may include a remote database, cloud-based data hosting, or otherremote data storage.

Web service 1102 can be configured to interact with web-basedapplications to send entity data and/or receive raw data (e.g., IT data,OT data, data samples, timeseries data, and the like). For example, webservice 1102 can provide an interface (e.g., API, UI/UX, and the like)to manage (e.g., register, create, edit, delete, and/or update) anentity (e.g., class entity, object entity, data entity, and/or the like)and the relational objects that define the relationships between theentities. In some embodiments, web service 1102 provides entity data toweb-based applications. For example, if one or more of applications 230are web-based applications, web service 1102 can provide entity data tothe web-based applications.

In some embodiments, web service 1102 receives raw data samples and/orraw timeseries data including device information from a web-based datacollector, or a web-based security service to identify authorizedentities and to exchange secured messages. For example, if softwaredefined gateway 212 is a web-based application, web service 1102 canreceive the raw data samples and/or timeseries data including a deviceattribute indicating a type of device (e.g., IoT device) from which thedata samples and/or timeseries data are received from software definedgateway 212. In some embodiments, web service 1102 may message securityservice 222 to request authorization information and/or permissioninformation of a particular entity or device. In some embodiments,entity service 226 processes and transforms the collected data togenerate the entity data.

Registration service 1104 can perform registration of devices andentities. For example, registration service 1104 can communicate withIoT devices 203 (e.g., via web service 1102) to register each IoT device203 with platform services 220. In some embodiments, registrationservice 1104 can be configured to create a virtual representation ofeach IoT device 203 in an IoT environment within platform services 220.In some embodiments, the virtual device representations are smartentities that include attributes defining or characterizing thecorresponding physical IoT devices 203 and relational objects definingthe relationship of the IoT device 203 with other devices.

Management service 1106 may create, modify, or update variousattributes, data entities, and/or relational objects of the devicesmanaged by platform services 220 for each entity rather than per classor type of entity. This allows for separate processing/analytics foreach individual entity rather than only to a class or type of entity.Some attributes (or data entities) may correspond to, for example, themost recent value of a data point provided to platform services 220 asOT data. For example, the “Daily Number of Steps” dynamic attribute ofthe “Activity Tracker” object entity 1202 in the example discussed abovemay be the most recent value of a number of steps data point provided bythe Activity Tracker device and can be received as a type of OT dataprovided by the Activity Tracker device. Management service 1106 can usethe relational objects of the entity data for Activity Tracker todetermine where to update the data of the attribute.

For example, management service 1106 may determine that a data entity(e.g., AI 201-01) is linked to the “Daily Number of Steps” dynamicattribute of Activity Tracker via an isLinked relational object. In thiscase, management service 1106 may automatically update the attributedata in the linked data entity. Further, if a linked data entity doesnot exist, management service 1106 can create a data entity (e.g., AI201-01) and an instance of the isLinked relational object 1224 to storeand link the “Daily Number of Steps” dynamic attribute of ActivityTracker therein. Accordingly, processing/analytics for activity tracker1202 may be automated. As another example, a “most recent view”attribute (or linked data entity) of a webpage object entity mayindicate the most recent time at which the webpage was viewed.Management service 1106 can use the entity data from a related clicktracking system object entity or web server object entity to determinewhen the most recent view occurred and can automatically update the“most recent view” attribute (or linked data entity) of the webpageentity accordingly.

Other data entities and/or attributes may be created and/or updated as aresult of an analytic, transformation, calculation, or other processingoperation based on the raw data and/or entity data. For example,management service 1106 can use the relational objects in entity data toidentify a related access control device (e.g., an electronic lock, akeypad, etc.) at the entrance/exit of a vehicle. Management service 1106can use raw data received from the identified access control device totrack the number of occupants entering and exiting the vehicle.Management service 1106 can update a “number of occupants” attribute (orcorresponding data entity) of the vehicle object each time a personenters or exits the vehicle using a related card object entity, suchthat the “number of occupants” attribute (or data entity) reflects thecurrent number of occupants within the vehicle. As another example, a“total revenue” attribute associated with a product line object entitymay be the summation of all the revenue generated from related point ofsales object entities. Management service 1106 can use the raw datareceived from the related point of sales object entities to determinewhen a sale of the product occurs, and can identify the amount ofrevenue generated by the sales. Management service 1106 can then updatethe “total revenue” attribute (or related data entity) of the productline object entity by adding the most recent sales revenue from each ofthe related point of sales object entities to the previous value of theattribute.

In some embodiments, management service 406 uses entity data and/or rawdata from multiple different data sources to update the attributes (orcorresponding data entities) of various object entities. For example, anobject entity representing a person (e.g., a person's cellular device orother related object entity) may include a “risk” attribute thatquantifies the person's level of risk attributable to various physical,environmental, or other conditions. Management service 1106 can userelational objects of the person object entity to identify a mobiledevice carried by the person (e.g., a cell phone) to determine thephysical location of the person at any given time. Management service1106 can use weather data from a weather service in the region in whichthe building object entity is located to determine whether any severeweather is approaching the person's location. Similarly, managementservice 1106 can use information from police, news services, and thelike to determine whether the building in which the person is located isexperiencing any emergency conditions (e.g., fire, building lockdown,etc.) or environmental hazards (e.g., detected air contaminants,pollutants, extreme temperatures, etc.) that could increase the person'slevel of risk. Management service 1106 can use these and other types ofdata as inputs to a risk function that calculates the value of theperson object entity's “risk” attribute and can update the person objectentity (or related device entity of the person) accordingly.

In some embodiments, management service 1106 can be configured tosynchronize configuration settings, parameters, and otherdevice-specific information between the entities and platform services220. In some embodiments, the synchronization occurs asynchronously.Management service 1106 can be configured to manage device propertiesdynamically. The device properties, configuration settings, parameters,and other device-specific information can be synchronized between thesmart entities created by and stored within platform services 220.

In some embodiments, management service 1106 is configured to manage amanifest for each of the IoT devices. The manifest may include a set ofrelationships between the IoT devices and various entities. Further, themanifest may indicate a set of entitlements for the IoT devices and/orentitlements of the various entities and/or other entities. The set ofentitlements may allow an IoT device and/or a user of the device toperform certain actions within the IoT environment (e.g., control,configure, monitor, and/or the like).

Still referring to FIG. 11, transformation service 1108 can provide datavirtualization, and can transform various predefined standard datamodels for entities in a same class or type to have the same entity datastructure, regardless of the device or thing that the entity represents.For example, each device entity under a device class may include alocation attribute, regardless of whether or not the location attributeis used. Thus, if an application is later developed requiring that eachdevice entity includes a location attribute, manual mapping ofheterogenous data of different entities in the same class may beavoided. Accordingly, interoperability between IoT devices andscalability of IoT applications may be improved.

In some embodiments, transformation service 1108 can provide entitymatching, cleansing, and correlation so that a unified cleansed view ofthe entity data including the entity related information (e.g.,relational objects) can be provided. Transformation service 408 cansupport semantic and syntactic relationship description in the form ofstandardized relational objects between the various entities. This maysimplify machine learning because the relational objects themselvesprovide all the relationship description between the other entities.Accordingly, the rich set of pre-built entity models and standardizedrelational objects may provide for rapid application development anddata analytics.

For example, FIG. 13 shows a flow diagram of a process or method forupdating/creating a data entity based on data received from a device,according to some embodiments. Referring to FIG. 13, the process starts,and when raw data and/or timeseries data is received from an IoT device,the transformation service 1108 may determine an identifier of the IoTdevice from the received data at block 1305. At block 1310,transformation service 1108 may compare an identity static attributefrom the data with identity static attributes of registered objectentities to locate a data container for the IoT device. If a match doesnot exist from the comparison at block 1315, transformation service 1108may invoke the registration service to register the IoT device at block1320. If a match exists from the comparison at block 1315,transformation service 1108 may generate an entity graph or retrieveentity data for the device at block 1325. From the entity graph orentity data, transformation service 1108 may determine if acorresponding data entity exists based on the relational objects (e.g.,isLinked) for the IoT device to update a dynamic attribute from the dataat block 1325. If not, management service 1106 may create a data entityfor the dynamic attribute and an instance of a corresponding relationalobject (e.g., isLinked) to define the relationship between the dynamicattribute and created data entity at block 1340. If the correspondingdata entity exists, management service 1106 may update the data entitycorresponding to the dynamic attribute from the data at block 1345.Then, transformation service 1108 may update or regenerate the entitygraph or entity data at block 1350, and the process may end.

Referring again to FIG. 11, search service 1110 provides a unified viewof product related information in the form of the entity graph, whichcorrelates entity relationships (via relational objects) among multipledata sources (e.g., CRM, ERP, MRP and the like). In some embodiments,search service 1110 is based on a schema-less and graph based indexingarchitecture. For example, in some embodiments, the search service 1110provides the entity graph in which the entities are represented as nodeswith relational objects defining the relationship between the entities(or nodes). Search service 1110 facilitates simple queries withouthaving to search multiple levels of the hierarchical tree of the entitygraph. For example, search service 1110 can return results based onsearching of entity type, individual entities, attributes, or evenrelational objects without requiring other levels or entities of thehierarchy to be searched.

FIG. 14 is an example entity graph 1400 of entity data according to anembodiment of the present disclosure. The example of FIG. 14 assumesthat a fault based application has detected a faulty measurement withrespect to IoT device 2. However, IoT device 2 relies on various othersystems and devices in order to operate properly. Thus, while the faultymeasurement was detected with respect to IoT device 2, IoT device 2itself may be operating properly. Accordingly, in order to pin point thecause of the faulty measurement, the fault based application may requireadditional information from various related IOT systems and devices(e.g., entity objects), as well as the zones and locations (e.g., entityobjects) that the systems and devices are configured to serve, in orderto properly determine or infer the cause of the faulty measurement.

Referring to FIG. 14, entity graph 1400 represents each of the entities(e.g., IoT device 2 and other related entities) as nodes on the entitygraph 1400, and shows the relationship between the nodes (e.g., IoTdevice 2 and related entities) via relational objects (e.g., Feeds,hasPoint, hasPart, Controls, etc.). For example, entity graph 1400 showsthat the entities related to IoT device 2 include a plurality of IoTsystems 1-4, IoT device 1, zones 1 and 2, and locations 1 and 2, eachrepresented as a node on the entity graph 1400. Further, the relationalobjects indicate that IoT device 2 provides a data point (e.g.,hasPoint) to zone 1. Zone 1 is shown to service location 1 (e.g.,hasPart), which is also serviced by zone 2 (e.g., hasPart). Zone 2 alsoservices location 2 (e.g., hasPart), and is controlled by IoT system 4(e.g., controls). IoT device 2 is shown to also provide a data point(e.g., hasPoint) to IoT system 2. IoT system 2 is shown to include IoTsystem 3 (e.g., hasPart), and feeds (e.g., Feeds) zone 1. Further, IoTsystem 2 is fed (e.g., Feeds) by IoT system 1, which receives a datapoint (e.g., hasPoint) from IoT device 1.

Accordingly, in the example of FIG. 14, in response to receiving thefaulty measurement from IoT device 2, the fault based application and/oranalytics service 224 can determine from entity graph 1400 that thefault could be caused by some malfunction in one or more of the otherrelated entities, and not necessarily a malfunction of the IoT device 2.Thus, the fault based application and/or the analytics service 224 caninvestigate into the other related entities to determine or infer themost likely cause of the fault.

For example, FIG. 15 is a flow diagram of a process or method foranalyzing data from a second related device based on data from a firstdevice, according to some embodiments. Referring to FIG. 15, the processstarts and data including an abnormal measurement is received from afirst device at block 1505. Transformation service 1108 determines anidentifier of the first device from the received data at block 1510.Transformation service 1108 identifies a second device related to thefirst device through relational objects associated with the first deviceat block 1515. Transformation service 1108 invokes web service 1102 toretrieve measurement data from the second device at block 1520.Analytics service 224 analyzes the data from the first device and thesecond device at block 1525. Analytics service 224 provides arecommendation from the analysis of the data from each of the firstdevice and the second device at block 1530, and the process ends.

Configuration of Exemplary Embodiments

The construction and arrangement of the systems and methods as shown inthe various exemplary embodiments are illustrative only. Although only afew embodiments have been described in detail in this disclosure, manymodifications are possible (e.g., variations in sizes, dimensions,structures, shapes and proportions of the various elements, values ofparameters, mounting arrangements, use of materials, colors,orientations, etc.). For example, the position of elements may bereversed or otherwise varied and the nature or number of discreteelements or positions may be altered or varied. Accordingly, all suchmodifications are intended to be included within the scope of thepresent disclosure. The order or sequence of any process or method stepsmay be varied or re-sequenced according to alternative embodiments.Other substitutions, modifications, changes, and omissions may be madein the design, operating conditions and arrangement of the exemplaryembodiments without departing from the scope of the present disclosure.

The present disclosure contemplates methods, systems and programproducts on any machine-readable media for accomplishing variousoperations. The embodiments of the present disclosure may be implementedusing existing computer processors, or by a special purpose computerprocessor for an appropriate system, incorporated for this or anotherpurpose, or by a hardwired system. Embodiments within the scope of thepresent disclosure include program products comprising machine-readablemedia for carrying or having machine-executable instructions or datastructures stored thereon. Such machine-readable media can be anyavailable media that can be accessed by a general purpose or specialpurpose computer or other machine with a processor. By way of example,such machine-readable media can comprise RAM, ROM, EPROM, EEPROM, CD-ROMor other optical disk storage, magnetic disk storage or other magneticstorage devices, or any other medium which can be used to carry or storedesired program code in the form of machine-executable instructions ordata structures and which can be accessed by a general purpose orspecial purpose computer or other machine with a processor. Combinationsof the above are also included within the scope of machine-readablemedia. Machine-executable instructions include, for example,instructions and data which cause a general purpose computer, specialpurpose computer, or special purpose processing machines to perform acertain function or group of functions.

Although the figures show a specific order of method steps, the order ofthe steps may differ from what is depicted. Also two or more steps maybe performed concurrently or with partial concurrence. Such variationwill depend on the software and hardware systems chosen and on designerchoice. All such variations are within the scope of the disclosure.Likewise, software implementations could be accomplished with standardprogramming techniques with rule based logic and other logic toaccomplish the various connection steps, processing steps, comparisonsteps and decision steps.

The term “client or “server” include all kinds of apparatus, devices,and machines for processing data, including by way of example aprogrammable processor, a computer, a system on a chip, or multipleones, or combinations, of the foregoing. The apparatus may includespecial purpose logic circuitry, e.g., a field programmable gate array(FPGA) or an application specific integrated circuit (ASIC). Theapparatus may also include, in addition to hardware, code that createsan execution environment for the computer program in question (e.g.,code that constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, a cross-platform runtimeenvironment, a virtual machine, or a combination of one or more ofthem). The apparatus and execution environment may realize variousdifferent computing model infrastructures, such as web services,distributed computing and grid computing infrastructures.

The systems and methods of the present disclosure may be completed byany computer program. A computer program (also known as a program,software, software application, script, or code) may be written in anyform of programming language, including compiled or interpretedlanguages, declarative or procedural languages, and it may be deployedin any form, including as a stand-alone program or as a module,component, subroutine, object, or other unit suitable for use in acomputing environment. A computer program may, but need not, correspondto a file in a file system. A program may be stored in a portion of afile that holds other programs or data (e.g., one or more scripts storedin a markup language document), in a single file dedicated to theprogram in question, or in multiple coordinated files (e.g., files thatstore one or more modules, sub programs, or portions of code). Acomputer program may be deployed to be executed on one computer or onmultiple computers that are located at one site or distributed acrossmultiple sites and interconnected by a communication network.

The processes and logic flows described in this specification may beperformed by one or more programmable processors executing one or morecomputer programs to perform actions by operating on input data andgenerating output. The processes and logic flows may also be performedby, and apparatus may also be implemented as, special purpose logiccircuitry (e.g., an FPGA or an ASIC).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read only memory ora random access memory or both. The essential elements of a computer area processor for performing actions in accordance with instructions andone or more memory devices for storing instructions and data. Generally,a computer will also include, or be operatively coupled to receive datafrom or transfer data to, or both, one or more mass storage devices forstoring data (e.g., magnetic, magneto-optical disks, or optical disks).However, a computer need not have such devices. Moreover, a computer maybe embedded in another device (e.g., a mobile telephone, a personaldigital assistant (PDA), a mobile audio or video player, a game console,a Global Positioning System (GPS) receiver, or a portable storage device(e.g., a universal serial bus (USB) flash drive), etc.). Devicessuitable for storing computer program instructions and data include allforms of non-volatile memory, media and memory devices, including by wayof example semiconductor memory devices (e.g., EPROM, EEPROM, and flashmemory devices; magnetic disks, e.g., internal hard disks or removabledisks; magneto-optical disks; and CD ROM and DVD-ROM disks). Theprocessor and the memory may be supplemented by, or incorporated in,special purpose logic circuitry.

In various implementations, the steps and operations described hereinmay be performed on one processor or in a combination of two or moreprocessors. For example, in some implementations, the various operationscould be performed in a central server or set of central serversconfigured to receive data from one or more devices (e.g., edgecomputing devices/controllers) and perform the operations. In someimplementations, the operations may be performed by one or more localcontrollers or computing devices (e.g., edge devices), such ascontrollers dedicated to and/or located within a particular building orportion of a building. In some implementations, the operations may beperformed by a combination of one or more central or offsite computingdevices/servers and one or more local controllers/computing devices. Allsuch implementations are contemplated within the scope of the presentdisclosure. Further, unless otherwise indicated, when the presentdisclosure refers to one or more computer-readable storage media and/orone or more controllers, such computer-readable storage media and/or oneor more controllers may be implemented as one or more central servers,one or more local controllers or computing devices (e.g., edge devices),any combination thereof, or any other combination of storage mediaand/or controllers regardless of the location of such devices.

To provide for interaction with a user, implementations of the subjectmatter described in this specification may be implemented on a computerhaving a display device (e.g., a CRT (cathode ray tube), LCD (liquidcrystal display), OLED (organic light emitting diode), TFT (thin-filmtransistor), or other flexible configuration, or any other monitor fordisplaying information to the user and a keyboard, a pointing device,e.g., a mouse, trackball, etc., or a touch screen, touch pad, etc.) bywhich the user may provide input to the computer. Other kinds of devicesmay be used to provide for interaction with a user as well; for example,feedback provided to the user may be any form of sensory feedback (e.g.,visual feedback, auditory feedback, or tactile feedback), and input fromthe user may be received in any form, including acoustic, speech, ortactile input. In addition, a computer may interact with a user bysending documents to and receiving documents from a device that is usedby the user; for example, by sending web pages to a web browser on auser's client device in response to requests received from the webbrowser.

Implementations of the subject matter described in this disclosure maybe implemented in a computing system that includes a back-end component(e.g., as a data server), or that includes a middleware component (e.g.,an application server), or that includes a front end component (e.g., aclient computer) having a graphical user interface or a web browserthrough which a user may interact with an implementation of the subjectmatter described in this disclosure, or any combination of one or moresuch back end, middleware, or front end components. The components ofthe system may be interconnected by any form or medium of digital datacommunication (e.g., a communication network). Examples of communicationnetworks include a LAN and a WAN, an inter-network (e.g., the Internet),and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).

The present disclosure may be embodied in various different forms, andshould not be construed as being limited to only the illustratedembodiments herein. Rather, these embodiments are provided as examplesso that this disclosure will be thorough and complete, and will fullyconvey the aspects and features of the present disclosure to thoseskilled in the art. Accordingly, processes, elements, and techniquesthat are not necessary to those having ordinary skill in the art for acomplete understanding of the aspects and features of the presentdisclosure may not be described. Unless otherwise noted, like referencenumerals denote like elements throughout the attached drawings and thewritten description, and thus, descriptions thereof may not be repeated.Further, features or aspects within each example embodiment shouldtypically be considered as available for other similar features oraspects in other example embodiments.

It will be understood that, although the terms “first,” “second,”“third,” etc., may be used herein to describe various elements,components, regions, layers and/or sections, these elements, components,regions, layers and/or sections should not be limited by these terms.These terms are used to distinguish one element, component, region,layer or section from another element, component, region, layer orsection. Thus, a first element, component, region, layer or sectiondescribed below could be termed a second element, component, region,layer or section, without departing from the spirit and scope of thepresent disclosure.

The terminology used herein is for the purpose of describing particularembodiments and is not intended to be limiting of the presentdisclosure. As used herein, the singular forms “a” and “an” are intendedto include the plural forms as well, unless the context clearlyindicates otherwise. It will be further understood that the terms“comprises,” “comprising,” “includes,” and “including,” “has,” “have,”and “having,” when used in this specification, specify the presence ofthe stated features, integers, steps, operations, elements, and/orcomponents, but do not preclude the presence or addition of one or moreother features, integers, steps, operations, elements, components,and/or groups thereof. As used herein, the term “and/or” includes anyand all combinations of one or more of the associated listed items.Expressions such as “at least one of,” when preceding a list ofelements, modify the entire list of elements and do not modify theindividual elements of the list.

As used herein, the term “substantially,” “about,” and similar terms areused as terms of approximation and not as terms of degree, and areintended to account for the inherent variations in measured orcalculated values that would be recognized by those of ordinary skill inthe art. Further, the use of “may” when describing embodiments of thepresent disclosure refers to “one or more embodiments of the presentdisclosure.” As used herein, the terms “use,” “using,” and “used” may beconsidered synonymous with the terms “utilize,” “utilizing,” and“utilized,” respectively. Also, the term “exemplary” is intended torefer to an example or illustration.

A portion of the disclosure of this patent document contains materialwhich is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure, as it appears in the Patent and TrademarkOffice patent file or records, but otherwise reserves all copyrightrights whatsoever.

1-20. (canceled)
 21. A building system comprising one or more computer readable media storing instructions thereon that, when executed by one or more processors, cause the one or more processors to perform operations comprising: creating and managing a data structure including a plurality of digital twins representing at least one of devices, people, or spaces, the plurality of digital twins associated with at least one of a plurality of attributes via a plurality of relationships, one relationship of the plurality of relationships relating one digital twin of the plurality of digital twins to one attribute of the plurality of attributes; receiving building data from a data source, the building data indicating a workflow for performing maintenance on at least one of the devices or the spaces; generating a workflow digital twin to provide a virtual representation of the workflow and translating data of the building data into one or more attributes of the workflow digital twin, the one or more attributes related to the workflow digital twin via one or more relationships of the plurality of relationships; adding the workflow digital twin to the data structure; and providing output data to one or more systems to cause the maintenance to be implemented, the output data based on the workflow digital twin and the one or more attributes.
 22. The building system of claim 21, wherein generating the workflow digital twin comprises: translating the data of the building data into one or more values for the one or more attributes; and writing the one or more values into the one or more attributes.
 23. The building system of claim 21, wherein the data source is one or more enterprise applications.
 24. The building system of claim 21, wherein the data source is at least one of a workflow automation system, a customer relationship management system, a global information system, a device management system, a human resources system, an accounting system, a marketing system, or a building management system.
 25. The building system of claim 21, wherein the data source includes a workflow automation system and the building data comprises a workflow request; wherein the workflow digital twin represents the workflow request and includes a plurality of workflow attributes using information contained in the workflow request.
 26. The building system of claim 21, wherein the plurality of digital twins include one or more virtual representations of at least one of a physical system or device, person or group of people, or space or group of spaces.
 27. The building system of claim 21, wherein: the building data comprises information technology (IT) data that describes one or more static characteristics of a device, person, or space; and wherein the operations include transforming the one or more static characteristics of the device, person, or space into one or more static attributes of the plurality of digital twins.
 28. The building system of claim 21, wherein the building data describes the plurality of digital twins and relationships therebetween.
 29. The building system of claim 21, wherein: the building data comprises operational technology (OT) data that describes one or more dynamic states or conditions of a device, person, or space; and wherein the operations include transforming the one or more dynamic states or conditions of the device, person, or space into one or more dynamic attributes of the plurality of digital twins.
 30. The building system of claim 21, wherein the plurality of digital twins comprise: one or more object entities each representing a physical device; one or more data entities each representing data generated by a corresponding physical device, each of the one or more data entities comprising a static attribute identifying a corresponding object entity and a dynamic attribute storing a most recent value of a dynamic variable associated with the corresponding physical device; and one or more relational objects indicating relationships interconnecting the one or more object entities and the one or more data entities, each of the one or more relational objects comprising a first attribute identifying a particular object entity and a second attribute identifying a corresponding data entity.
 31. The building system of claim 21, wherein the operations include using a different communications protocol to communicate with one or more first enterprise applications providing the building data and one or more second enterprise applications that read the plurality of digital twins.
 32. The building system of claim 31, wherein the operations include translating between one or more first communications protocols or formats used by the one or more first enterprise applications and the one or more second enterprise applications and a second protocol or format used by the plurality of digital twins.
 33. The building system of claim 21, wherein the operations further include: reading the plurality of attributes of the plurality of digital twins; translating the one or more attributes of the workflow digital twin into outbound data; and providing the outbound data to one or more applications.
 34. The building system of claim 33, wherein the one or more applications are enterprise applications.
 35. A method comprising: creating and managing, by one or more processing circuits, a data structure including a plurality of digital twins representing at least one of devices, people, or spaces, the plurality of digital twins associated with at least one of a plurality of attributes via a plurality of relationships, one relationship of the plurality of relationships relating one digital twin of the plurality of digital twins to one attribute of the plurality of attributes; receiving, by the one or more processing circuits, building data from a data source, the building data indicating a workflow for performing maintenance on at least one of the devices or the spaces; generating, by the one or more processing circuits, a workflow digital twin to provide a virtual representation of the workflow and translating data of the building data into one or more attributes of the workflow digital twin, the one or more attributes related to the workflow digital twin via one or more relationships of the plurality of relationships; adding, by the one or more processing circuits, the workflow digital twin to the data structure; and providing, by the one or more processing circuits, output data to one or more systems to cause the maintenance to be implemented, the output data based on the workflow digital twin and the one or more attributes.
 36. The method of claim 35, wherein generating, by the one or more processing circuits, the workflow digital twin includes: translating the data of the building data into one or more values for the one or more attributes; and writing the one or more values into the one or more attributes.
 37. The method of claim 35, wherein the data source is one or more enterprise applications.
 38. The method of claim 35, wherein the data source is at least one of a workflow automation system, a customer relationship management system, a global information system, a device management system, a human resources system, an accounting system, a marketing system, or a building management system.
 39. The method of claim 35, wherein the data source includes a workflow automation system and the building data comprises a workflow request; wherein the workflow digital twin represents the workflow request and includes a plurality of workflow attributes using information contained in the workflow request.
 40. A building system comprising: one or more computer readable media storing instructions thereon; and one or more processors configured to execute the instructions, causing the one or more processors to: create and manage a data structure including a plurality of digital twins representing at least one of devices, people, or spaces, the plurality of digital twins associated with at least one of a plurality of attributes via a plurality of relationships, one relationship of the plurality of relationships relating one digital twin of the plurality of digital twins to one attribute of the plurality of attributes; receive building data from a data source, the building data indicating a workflow for performing maintenance on at least one of the devices or the spaces; generate a workflow digital twin to provide a virtual representation of the workflow and translating data of the building data into one or more attributes of the workflow digital twin, the one or more attributes related to the workflow digital twin via one or more relationships of the plurality of relationships; add the workflow digital twin to the data structure; and provide output data to one or more systems to cause the maintenance to be implemented, the output data based on the workflow digital twin and the one or more attributes. 